<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Chapter 1 General Information</title>
<link rel="stylesheet" href="mvl.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets + chunker.py v1.9.2" />
<link rel="start" href="index.html" title="{book-title}" />
<link rel="up" href="" title="" />
<link rel="prev" href="preface.html" title=" Preface and Legal Notices" />
<link rel="next" href="installing.html" title="Chapter 2 Installing and Upgrading MySQL" />
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Chapter 1 General Information</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<th width="60%" align="center"></th>
<td width="20%" align="right"> <a accesskey="n" href="installing.html">Next</a></td>
</tr>
</table>
<hr>
</div>
<div class="chapter">
<div class="titlepage">
<div>
<div>
<h1 class="title"><a name="introduction"></a>Chapter 1 General Information</h1>

</div>

</div>

</div>
<div class="toc">
<p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="introduction.html#manual-info">1.1 About This Manual</a></span></dt><dt><span class="section"><a href="introduction.html#manual-conventions">1.2 Typographical and Syntax Conventions</a></span></dt><dt><span class="section"><a href="introduction.html#what-is">1.3 Overview of the MySQL Database Management System</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#what-is-mysql">1.3.1 What is MySQL?</a></span></dt><dt><span class="section"><a href="introduction.html#features">1.3.2 The Main Features of MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#history">1.3.3 History of MySQL</a></span></dt></dl></dd><dt><span class="section"><a href="introduction.html#mysql-nutshell">1.4 What Is New in MySQL 5.7</a></span></dt><dt><span class="section"><a href="introduction.html#added-deprecated-removed">1.5 Server and Status Variables and Options Added, Deprecated, or Removed in
MySQL 5.7</a></span></dt><dt><span class="section"><a href="introduction.html#information-sources">1.6 MySQL Information Sources</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#mysql-web-sites">1.6.1 MySQL Websites</a></span></dt><dt><span class="section"><a href="introduction.html#mailing-lists">1.6.2 MySQL Mailing Lists</a></span></dt><dt><span class="section"><a href="introduction.html#forums">1.6.3 MySQL Community Support at the MySQL Forums</a></span></dt><dt><span class="section"><a href="introduction.html#irc">1.6.4 MySQL Community Support on Internet Relay Chat (IRC)</a></span></dt><dt><span class="section"><a href="introduction.html#mysql-enterprise-information">1.6.5 MySQL Enterprise</a></span></dt></dl></dd><dt><span class="section"><a href="introduction.html#bug-reports">1.7 How to Report Bugs or Problems</a></span></dt><dt><span class="section"><a href="introduction.html#compatibility">1.8 MySQL Standards Compliance</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#extensions-to-ansi">1.8.1 MySQL Extensions to Standard SQL</a></span></dt><dt><span class="section"><a href="introduction.html#differences-from-ansi">1.8.2 MySQL Differences from Standard SQL</a></span></dt><dt><span class="section"><a href="introduction.html#constraints">1.8.3 How MySQL Deals with Constraints</a></span></dt></dl></dd><dt><span class="section"><a href="introduction.html#credits">1.9 Credits</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#contributors">1.9.1 Contributors to MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#documenters-translators">1.9.2 Documenters and translators</a></span></dt><dt><span class="section"><a href="introduction.html#packages">1.9.3 Packages that support MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#tools-used-to-create-mysql">1.9.4 Tools that were used to create MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#supporters">1.9.5 Supporters of MySQL</a></span></dt></dl></dd></dl>
</div>
<a class="indexterm" name="idm139684853906064"></a><a class="indexterm" name="idm139684853904896"></a><p>
    The MySQL™ software delivers a very fast, multithreaded,
    multi-user, and robust SQL (Structured Query Language) database
    server. MySQL Server is intended for mission-critical, heavy-load
    production systems as well as for embedding into mass-deployed
    software. Oracle is a registered trademark of Oracle Corporation
    and/or its affiliates. MySQL is a trademark of Oracle Corporation
    and/or its affiliates, and shall not be used by Customer without
    Oracle's express written authorization. Other names may be
    trademarks of their respective owners.
  </p><p>
    The MySQL software is Dual Licensed. Users can choose to use the
    MySQL software as an Open Source product under the terms of the GNU
    General Public License (<a class="ulink" href="http://www.fsf.org/licenses/" target="_top">http://www.fsf.org/licenses/</a>)
    or can purchase a standard commercial license from Oracle. See
    <a class="ulink" href="http://www.mysql.com/company/legal/licensing/" target="_top">http://www.mysql.com/company/legal/licensing/</a> for
    more information on our licensing policies.
  </p><p>
    The following list describes some sections of particular interest in
    this manual:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        For a discussion of MySQL Database Server capabilities, see
        <a class="xref" href="introduction.html#features" title="1.3.2 The Main Features of MySQL">Section 1.3.2, “The Main Features of MySQL”</a>.
      </p></li><li class="listitem"><p>
        For an overview of new MySQL features, see
        <a class="xref" href="introduction.html#mysql-nutshell" title="1.4 What Is New in MySQL 5.7">Section 1.4, “What Is New in MySQL 5.7”</a>. For information about the
        changes in each version, see the
        <a class="ulink" href="http://dev.mysql.com/doc/relnotes/mysql/5.7/en/" target="_top">Release
        Notes</a>.
      </p></li><li class="listitem"><p>
        For installation instructions, see <a class="xref" href="installing.html" title="Chapter 2 Installing and Upgrading MySQL">Chapter 2, <i>Installing and Upgrading MySQL</i></a>.
        For information about upgrading MySQL, see
        <a class="xref" href="installing.html#upgrading" title="2.11.1 Upgrading MySQL">Section 2.11.1, “Upgrading MySQL”</a>.
      </p></li><li class="listitem"><p>
        For a tutorial introduction to the MySQL Database Server, see
        <a class="xref" href="tutorial.html" title="Chapter 3 Tutorial">Chapter 3, <i>Tutorial</i></a>.
      </p></li><li class="listitem"><p>
        For information about configuring and administering MySQL
        Server, see <a class="xref" href="server-administration.html" title="Chapter 5 MySQL Server Administration">Chapter 5, <i>MySQL Server Administration</i></a>.
      </p></li><li class="listitem"><p>
        For information about security in MySQL, see
        <a class="xref" href="security.html" title="Chapter 6 Security">Chapter 6, <i>Security</i></a>.
      </p></li><li class="listitem"><p>
        For information about setting up replication servers, see
        <a class="xref" href="replication.html" title="Chapter 16 Replication">Chapter 16, <i>Replication</i></a>.
      </p></li><li class="listitem"><p>
        For information about MySQL Enterprise, the commercial MySQL
        release with advanced features and management tools, see
        <a class="xref" href="mysql-enterprise.html" title="Chapter 29 MySQL Enterprise Edition">Chapter 29, <i>MySQL Enterprise Edition</i></a>.
      </p></li><li class="listitem"><p>
        For answers to a number of questions that are often asked
        concerning the MySQL Database Server and its capabilities, see
        <a class="xref" href="faqs.html" title="Appendix A MySQL 5.7 Frequently Asked Questions">Appendix A, <i>MySQL 5.7 Frequently Asked Questions</i></a>.
      </p></li><li class="listitem"><p>
        For a history of new features and bug fixes, see the
        <a class="ulink" href="http://dev.mysql.com/doc/relnotes/mysql/5.7/en/" target="_top">Release
        Notes</a>.
</p></li></ul>
</div>
<a class="indexterm" name="idm139684848363008"></a><a class="indexterm" name="idm139684848361616"></a><a class="indexterm" name="idm139684848360224"></a><a class="indexterm" name="idm139684848358832"></a>
<div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">

<div class="admon-title">
Important
</div>
<p>
      To report problems or bugs, please use the instructions at
      <a class="xref" href="introduction.html#bug-reports" title="1.7 How to Report Bugs or Problems">Section 1.7, “How to Report Bugs or Problems”</a>. If you find a sensitive security
      bug in MySQL Server, please let us know immediately by sending an
      email message to <code class="email">&lt;<a class="email" href="mailto:secalert_us@oracle.com">secalert_us@oracle.com</a>&gt;</code>. Exception:
      Support customers should report all problems, including security
      bugs, to Oracle Support.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="manual-info"></a>1.1 About This Manual</h2>

</div>

</div>

</div>
<a class="indexterm" name="idm139684848354544"></a><a class="indexterm" name="idm139684848353536"></a><p>
      This is the Reference Manual for the MySQL Database System,
      version 5.7, through release 5.7.24.
      Differences between minor versions of MySQL 5.7 are
      noted in the present text with reference to release numbers
      (5.7.<em class="replaceable"><code>x</code></em>).
    </p><p>
      This manual is not intended for use with older versions of the
      MySQL software due to the many functional and other differences
      between MySQL 5.7 and previous versions. If you are
      using an earlier release of the MySQL software, please refer to
      the appropriate manual. For example,
      <a class="ulink" href="http://dev.mysql.com/doc/refman/5.6/en/" target="_top"><em class="citetitle">MySQL 5.6 Reference Manual</em></a>
      covers the 5.6 series of MySQL software releases.
    </p><p>
      Because this manual serves as a reference, it does not provide
      general instruction on SQL or relational database concepts. It
      also does not teach you how to use your operating system or
      command-line interpreter.
    </p><p>
      The MySQL Database Software is under constant development, and the
      Reference Manual is updated frequently as well. The most recent
      version of the manual is available online in searchable form at
      <a class="ulink" href="http://dev.mysql.com/doc/" target="_top">http://dev.mysql.com/doc/</a>. Other formats also are available
      there, including HTML, PDF, and EPUB versions.
    </p><a class="indexterm" name="idm139684848346992"></a><a class="indexterm" name="idm139684848345600"></a><p>
      The Reference Manual source files are written in DocBook XML
      format. The HTML version and other formats are produced
      automatically, primarily using the DocBook XSL stylesheets. For
      information about DocBook, see <a class="ulink" href="http://docbook.org/" target="_top">http://docbook.org/</a>
    </p><p>
      If you have questions about using MySQL, you can ask them using
      our mailing lists or forums. See <a class="xref" href="introduction.html#mailing-lists" title="1.6.2 MySQL Mailing Lists">Section 1.6.2, “MySQL Mailing Lists”</a>,
      and <a class="xref" href="introduction.html#forums" title="1.6.3 MySQL Community Support at the MySQL Forums">Section 1.6.3, “MySQL Community Support at the MySQL Forums”</a>. If you have suggestions concerning
      additions or corrections to the manual itself, please send them to
      the <a class="ulink" href="http://www.mysql.com/company/contact/" target="_top">http://www.mysql.com/company/contact/</a>.
    </p><p>
      This manual was originally written by David Axmark and Michael
      <span class="quote">“<span class="quote">Monty</span>”</span> Widenius. It is maintained by the MySQL
      Documentation Team, consisting of Chris Cole, Paul DuBois,
      Margaret Fisher, Edward Gilmore, Stefan Hinz, David Moss, Philip
      Olson, Daniel Price, Daniel So, and Jon Stephens.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="manual-conventions"></a>1.2 Typographical and Syntax Conventions</h2>

</div>

</div>

</div>
<p>
    This manual uses certain typographical conventions:
</p><a class="indexterm" name="idm139684848338096"></a><a class="indexterm" name="idm139684848336704"></a><a class="indexterm" name="idm139684848335696"></a><a class="indexterm" name="idm139684848334304"></a><a class="indexterm" name="idm139684848332912"></a><a class="indexterm" name="idm139684848331904"></a>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        <code class="literal">Text in this style</code> is used for SQL
        statements; database, table, and column names; program listings
        and source code; and environment variables. Example: <span class="quote">“<span class="quote">To
        reload the grant tables, use the <a class="link" href="sql-syntax.html#flush-privileges"><code class="literal">FLUSH
        PRIVILEGES</code></a> statement.</span>”</span>
      </p></li><li class="listitem"><p>
        <strong class="userinput"><code>Text in this style</code></strong> indicates input that
        you type in examples.
      </p></li><li class="listitem"><p>
        <span class="command"><strong>Text in this style</strong></span> indicates the names of
        executable programs and scripts, examples being
        <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> (the MySQL command-line client program)
        and <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> (the MySQL server executable).
      </p></li><li class="listitem"><p>
        <em class="replaceable"><code>Text in this style</code></em> is used for
        variable input for which you should substitute a value of your
        own choosing.
      </p></li><li class="listitem"><p>
        <span class="emphasis"><em>Text in this style</em></span> is used for emphasis.
      </p></li><li class="listitem"><p>
        <span class="bold"><strong>Text in this style</strong></span> is used in
        table headings and to convey especially strong emphasis.
      </p></li><li class="listitem"><p>
        <code class="option">Text in this style</code> is used to indicate a
        program option that affects how the program is executed, or that
        supplies information that is needed for the program to function
        in a certain way. <span class="emphasis"><em>Example</em></span>: <span class="quote">“<span class="quote">The
        <code class="option">--host</code> option (short form <code class="option">-h</code>)
        tells the <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> client program the hostname
        or IP address of the MySQL server that it should connect
        to</span>”</span>.
      </p></li><li class="listitem"><p>
        File names and directory names are written like this: <span class="quote">“<span class="quote">The
        global <code class="filename">my.cnf</code> file is located in the
        <code class="filename">/etc</code> directory.</span>”</span>
      </p></li><li class="listitem"><p>
        Character sequences are written like this: <span class="quote">“<span class="quote">To specify a
        wildcard, use the <span class="quote">‘<span class="quote"><code class="literal">%</code></span>’</span>
        character.</span>”</span>
</p></li></ul>
</div>
<p>
    When commands are shown that are meant to be executed from within a
    particular program, the prompt shown preceding the command indicates
    which command to use. For example, <code class="literal">shell&gt;</code>
    indicates a command that you execute from your login shell,
    <code class="literal">root-shell&gt;</code> is similar but should be executed
    as <code class="literal">root</code>, and <code class="literal">mysql&gt;</code>
    indicates a statement that you execute from the
    <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> client program:
  </p><pre class="programlisting">
shell&gt; <strong class="userinput"><code>type a shell command here</code></strong>
root-shell&gt; <strong class="userinput"><code>type a shell command as <em class="replaceable"><code>root</code></em> here</code></strong>
mysql&gt; <strong class="userinput"><code>type a mysql statement here</code></strong>
</pre><p>
    In some areas different systems may be distinguished from each other
    to show that commands should be executed in two different
    environments. For example, while working with replication the
    commands might be prefixed with <code class="literal">master</code> and
    <code class="literal">slave</code>:
  </p><pre class="programlisting">
master&gt; <strong class="userinput"><code>type a mysql command on the replication master here</code></strong>
slave&gt; <strong class="userinput"><code>type a mysql command on the replication slave here</code></strong>
</pre><p>
    The <span class="quote">“<span class="quote">shell</span>”</span> is your command interpreter. On Unix, this
    is typically a program such as <span class="command"><strong>sh</strong></span>,
    <span class="command"><strong>csh</strong></span>, or <span class="command"><strong>bash</strong></span>. On Windows, the
    equivalent program is <span class="command"><strong>command.com</strong></span> or
    <span class="command"><strong>cmd.exe</strong></span>, typically run in a console window.
  </p><p>
    When you enter a command or statement shown in an example, do not
    type the prompt shown in the example.
  </p><p>
    Database, table, and column names must often be substituted into
    statements. To indicate that such substitution is necessary, this
    manual uses <em class="replaceable"><code>db_name</code></em>,
    <em class="replaceable"><code>tbl_name</code></em>, and
    <em class="replaceable"><code>col_name</code></em>. For example, you might see a
    statement like this:
  </p><pre class="programlisting">
mysql&gt; <strong class="userinput"><code>SELECT <em class="replaceable"><code>col_name</code></em> FROM <em class="replaceable"><code>db_name</code></em>.<em class="replaceable"><code>tbl_name</code></em>;</code></strong>
</pre><p>
    This means that if you were to enter a similar statement, you would
    supply your own database, table, and column names, perhaps like
    this:
  </p><pre class="programlisting">
mysql&gt; <strong class="userinput"><code>SELECT author_name FROM biblio_db.author_list;</code></strong>
</pre><p>
    SQL keywords are not case-sensitive and may be written in any
    lettercase. This manual uses uppercase.
  </p><p>
    In syntax descriptions, square brackets
    (<span class="quote">“<span class="quote"><code class="literal">[</code></span>”</span> and
    <span class="quote">“<span class="quote"><code class="literal">]</code></span>”</span>) indicate optional words or
    clauses. For example, in the following statement, <code class="literal">IF
    EXISTS</code> is optional:
  </p><pre class="programlisting">
DROP TABLE [IF EXISTS] <em class="replaceable"><code>tbl_name</code></em>
</pre><p>
    When a syntax element consists of a number of alternatives, the
    alternatives are separated by vertical bars
    (<span class="quote">“<span class="quote"><code class="literal">|</code></span>”</span>). When one member from a set of
    choices <span class="emphasis"><em>may</em></span> be chosen, the alternatives are
    listed within square brackets (<span class="quote">“<span class="quote"><code class="literal">[</code></span>”</span>
    and <span class="quote">“<span class="quote"><code class="literal">]</code></span>”</span>):
  </p><pre class="programlisting">
TRIM([[BOTH | LEADING | TRAILING] [<em class="replaceable"><code>remstr</code></em>] FROM] <em class="replaceable"><code>str</code></em>)
</pre><p>
    When one member from a set of choices <span class="emphasis"><em>must</em></span> be
    chosen, the alternatives are listed within braces
    (<span class="quote">“<span class="quote"><code class="literal">{</code></span>”</span> and
    <span class="quote">“<span class="quote"><code class="literal">}</code></span>”</span>):
  </p><pre class="programlisting">
{DESCRIBE | DESC} <em class="replaceable"><code>tbl_name</code></em> [<em class="replaceable"><code>col_name</code></em> | <em class="replaceable"><code>wild</code></em>]
</pre><p>
    An ellipsis (<code class="literal">...</code>) indicates the omission of a
    section of a statement, typically to provide a shorter version of
    more complex syntax. For example,
    <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT ... INTO
    OUTFILE</code></a> is shorthand for the form of
    <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> statement that has an
    <code class="literal">INTO OUTFILE</code> clause following other parts of the
    statement.
  </p><p>
    An ellipsis can also indicate that the preceding syntax element of a
    statement may be repeated. In the following example, multiple
    <em class="replaceable"><code>reset_option</code></em> values may be given, with
    each of those after the first preceded by commas:
  </p><pre class="programlisting">
RESET <em class="replaceable"><code>reset_option</code></em> [,<em class="replaceable"><code>reset_option</code></em>] ...
</pre><p>
    Commands for setting shell variables are shown using Bourne shell
    syntax. For example, the sequence to set the <code class="literal">CC</code>
    environment variable and run the <span class="command"><strong>configure</strong></span>
    command looks like this in Bourne shell syntax:
  </p><pre class="programlisting">
shell&gt; <strong class="userinput"><code>CC=gcc ./configure</code></strong>
</pre><a class="indexterm" name="idm139684848266432"></a><a class="indexterm" name="idm139684848265424"></a><p>
    If you are using <span class="command"><strong>csh</strong></span> or <span class="command"><strong>tcsh</strong></span>,
    you must issue commands somewhat differently:
  </p><pre class="programlisting">
shell&gt; <strong class="userinput"><code>setenv CC gcc</code></strong>
shell&gt; <strong class="userinput"><code>./configure</code></strong>
</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="what-is"></a>1.3 Overview of the MySQL Database Management System</h2>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#what-is-mysql">1.3.1 What is MySQL?</a></span></dt><dt><span class="section"><a href="introduction.html#features">1.3.2 The Main Features of MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#history">1.3.3 History of MySQL</a></span></dt></dl>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="what-is-mysql"></a>1.3.1 What is MySQL?</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684848258784"></a><a class="indexterm" name="idm139684848257392"></a><p>
      MySQL, the most popular Open Source SQL database management
      system, is developed, distributed, and supported by Oracle
      Corporation.
    </p><p>
      The MySQL website (<a class="ulink" href="http://www.mysql.com/" target="_top">http://www.mysql.com/</a>) provides
      the latest information about MySQL software.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <span class="bold"><strong>MySQL is a database management
          system.</strong></span>
        </p><p>
          A database is a structured collection of data. It may be
          anything from a simple shopping list to a picture gallery or
          the vast amounts of information in a corporate network. To
          add, access, and process data stored in a computer database,
          you need a database management system such as MySQL Server.
          Since computers are very good at handling large amounts of
          data, database management systems play a central role in
          computing, as standalone utilities, or as parts of other
          applications.
        </p></li><li class="listitem"><p>
          <span class="bold"><strong>MySQL databases are
          relational.</strong></span>
        </p><p>
          <a class="indexterm" name="idm139684848250320"></a>

          A relational database stores data in separate tables rather
          than putting all the data in one big storeroom. The database
          structures are organized into physical files optimized for
          speed. The logical model, with objects such as databases,
          tables, views, rows, and columns, offers a flexible
          programming environment. You set up rules governing the
          relationships between different data fields, such as
          one-to-one, one-to-many, unique, required or optional, and
          <span class="quote">“<span class="quote">pointers</span>”</span> between different tables. The database
          enforces these rules, so that with a well-designed database,
          your application never sees inconsistent, duplicate, orphan,
          out-of-date, or missing data.
        </p><p>
          The SQL part of <span class="quote">“<span class="quote">MySQL</span>”</span> stands for
          <span class="quote">“<span class="quote">Structured Query Language</span>”</span>. SQL is the most
          common standardized language used to access databases.
          Depending on your programming environment, you might enter SQL
          directly (for example, to generate reports), embed SQL
          statements into code written in another language, or use a
          language-specific API that hides the SQL syntax.
        </p><p>
          SQL is defined by the ANSI/ISO SQL Standard. The SQL standard
          has been evolving since 1986 and several versions exist. In
          this manual, <span class="quote">“<span class="quote">SQL-92</span>”</span> refers to the standard
          released in 1992, <span class="quote">“<span class="quote">SQL:1999</span>”</span> refers to the
          standard released in 1999, and <span class="quote">“<span class="quote">SQL:2003</span>”</span> refers
          to the current version of the standard. We use the phrase
          <span class="quote">“<span class="quote">the SQL standard</span>”</span> to mean the current version of
          the SQL Standard at any time.
        </p></li><li class="listitem"><p>
          <span class="bold"><strong>MySQL software is Open
          Source.</strong></span>
        </p><p>
          <a class="indexterm" name="idm139684848242080"></a>

          <a class="indexterm" name="idm139684848240688"></a>

          <a class="indexterm" name="idm139684848239296"></a>

          <a class="indexterm" name="idm139684848237904"></a>

          Open Source means that it is possible for anyone to use and
          modify the software. Anybody can download the MySQL software
          from the Internet and use it without paying anything. If you
          wish, you may study the source code and change it to suit your
          needs. The MySQL software uses the GPL (GNU General Public
          License), <a class="ulink" href="http://www.fsf.org/licenses/" target="_top">http://www.fsf.org/licenses/</a>, to
          define what you may and may not do with the software in
          different situations. If you feel uncomfortable with the GPL
          or need to embed MySQL code into a commercial application, you
          can buy a commercially licensed version from us. See the MySQL
          Licensing Overview for more information
          (<a class="ulink" href="http://www.mysql.com/company/legal/licensing/" target="_top">http://www.mysql.com/company/legal/licensing/</a>).
        </p></li><li class="listitem"><p>
          <span class="bold"><strong>The MySQL Database Server is very fast,
          reliable, scalable, and easy to use.</strong></span>
        </p><p>
          If that is what you are looking for, you should give it a try.
          MySQL Server can run comfortably on a desktop or laptop,
          alongside your other applications, web servers, and so on,
          requiring little or no attention. If you dedicate an entire
          machine to MySQL, you can adjust the settings to take
          advantage of all the memory, CPU power, and I/O capacity
          available. MySQL can also scale up to clusters of machines,
          networked together.
        </p><p>
          MySQL Server was originally developed to handle large
          databases much faster than existing solutions and has been
          successfully used in highly demanding production environments
          for several years. Although under constant development, MySQL
          Server today offers a rich and useful set of functions. Its
          connectivity, speed, and security make MySQL Server highly
          suited for accessing databases on the Internet.
        </p></li><li class="listitem"><p>
          <span class="bold"><strong>MySQL Server works in client/server or
          embedded systems.</strong></span>
        </p><p>
          The MySQL Database Software is a client/server system that
          consists of a multithreaded SQL server that supports different
          back ends, several different client programs and libraries,
          administrative tools, and a wide range of application
          programming interfaces (APIs).
        </p><p>
          We also provide MySQL Server as an embedded multithreaded
          library that you can link into your application to get a
          smaller, faster, easier-to-manage standalone product.
        </p></li><li class="listitem"><p>
          <span class="bold"><strong>A large amount of contributed MySQL
          software is available.</strong></span>
        </p><p>
          MySQL Server has a practical set of features developed in
          close cooperation with our users. It is very likely that your
          favorite application or language supports the MySQL Database
          Server.
</p></li></ul>
</div>
<a class="indexterm" name="idm139684848226560"></a><a class="indexterm" name="idm139684848225168"></a><p>
      The official way to pronounce <span class="quote">“<span class="quote">MySQL</span>”</span> is <span class="quote">“<span class="quote">My
      Ess Que Ell</span>”</span> (not <span class="quote">“<span class="quote">my sequel</span>”</span>), but we do not
      mind if you pronounce it as <span class="quote">“<span class="quote">my sequel</span>”</span> or in some
      other localized way.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="features"></a>1.3.2 The Main Features of MySQL</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684848220848"></a><a class="indexterm" name="idm139684848219840"></a><p>
      This section describes some of the important characteristics of
      the MySQL Database Software. In most respects, the roadmap applies
      to all versions of MySQL. For information about features as they
      are introduced into MySQL on a series-specific basis, see the
      <span class="quote">“<span class="quote">In a Nutshell</span>”</span> section of the appropriate Manual:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          MySQL 8.0: <a class="ulink" href="http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html" target="_top">What Is New in MySQL 8.0</a>
        </p></li><li class="listitem"><p>
          MySQL 5.7: <a class="xref" href="introduction.html#mysql-nutshell" title="1.4 What Is New in MySQL 5.7">Section 1.4, “What Is New in MySQL 5.7”</a>
        </p></li><li class="listitem"><p>
          MySQL 5.6: <a class="ulink" href="http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html" target="_top">What Is New in MySQL 5.6</a>
        </p></li><li class="listitem"><p>
          MySQL 5.5: <a class="ulink" href="http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html" target="_top">What Is New in MySQL 5.5</a>
</p></li></ul>
</div>
<h4><a name="idm139684848210720"></a>Internals and Portability</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Written in C and C++.
        </p></li><li class="listitem"><p>
          Tested with a broad range of different compilers.
        </p></li><li class="listitem"><p>
          Works on many different platforms. See
          <a class="ulink" href="http://www.mysql.com/support/supportedplatforms/database.html" target="_top">http://www.mysql.com/support/supportedplatforms/database.html</a>.
        </p></li><li class="listitem"><p>
          For portability, uses <span class="command"><strong>CMake</strong></span> in MySQL 5.5
          and up. Previous series use GNU Automake, Autoconf, and
          Libtool.
        </p></li><li class="listitem"><p>
          Tested with Purify (a commercial memory leakage detector) as
          well as with Valgrind, a GPL tool
          (<a class="ulink" href="http://developer.kde.org/~sewardj/" target="_top">http://developer.kde.org/~sewardj/</a>).
        </p></li><li class="listitem"><p>
          Uses multi-layered server design with independent modules.
        </p></li><li class="listitem"><p>
          Designed to be fully multithreaded using kernel threads, to
          easily use multiple CPUs if they are available.
        </p></li><li class="listitem"><p>
          Provides transactional and nontransactional storage engines.
        </p></li><li class="listitem"><p>
          Uses very fast B-tree disk tables (<code class="literal">MyISAM</code>)
          with index compression.
        </p></li><li class="listitem"><p>
          Designed to make it relatively easy to add other storage
          engines. This is useful if you want to provide an SQL
          interface for an in-house database.
        </p></li><li class="listitem"><p>
          Uses a very fast thread-based memory allocation system.
        </p></li><li class="listitem"><p>
          Executes very fast joins using an optimized nested-loop join.
        </p></li><li class="listitem"><p>
          Implements in-memory hash tables, which are used as temporary
          tables.
        </p></li><li class="listitem"><p>
          Implements SQL functions using a highly optimized class
          library that should be as fast as possible. Usually there is
          no memory allocation at all after query initialization.
        </p></li><li class="listitem"><p>
          Provides the server as a separate program for use in a
          client/server networked environment, and as a library that can
          be embedded (linked) into standalone applications. Such
          applications can be used in isolation or in environments where
          no network is available.
</p></li></ul>
</div>
<h4><a name="idm139684848194016"></a>Data Types</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Many data types: signed/unsigned integers 1, 2, 3, 4, and 8
          bytes long, <a class="link" href="data-types.html#floating-point-types" title="11.2.3 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE"><code class="literal">FLOAT</code></a>,
          <a class="link" href="data-types.html#floating-point-types" title="11.2.3 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE"><code class="literal">DOUBLE</code></a>,
          <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">CHAR</code></a>,
          <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a>,
          <a class="link" href="data-types.html#binary-varbinary" title="11.4.2 The BINARY and VARBINARY Types"><code class="literal">BINARY</code></a>,
          <a class="link" href="data-types.html#binary-varbinary" title="11.4.2 The BINARY and VARBINARY Types"><code class="literal">VARBINARY</code></a>,
          <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">TEXT</code></a>,
          <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">BLOB</code></a>,
          <a class="link" href="data-types.html#datetime" title="11.3.1 The DATE, DATETIME, and TIMESTAMP Types"><code class="literal">DATE</code></a>,
          <a class="link" href="data-types.html#time" title="11.3.2 The TIME Type"><code class="literal">TIME</code></a>,
          <a class="link" href="data-types.html#datetime" title="11.3.1 The DATE, DATETIME, and TIMESTAMP Types"><code class="literal">DATETIME</code></a>,
          <a class="link" href="data-types.html#datetime" title="11.3.1 The DATE, DATETIME, and TIMESTAMP Types"><code class="literal">TIMESTAMP</code></a>,
          <a class="link" href="data-types.html#year" title="11.3.3 The YEAR Type"><code class="literal">YEAR</code></a>,
          <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a>,
          <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a>, and OpenGIS spatial
          types. See <a class="xref" href="data-types.html" title="Chapter 11 Data Types">Chapter 11, <i>Data Types</i></a>.
        </p></li><li class="listitem"><p>
          Fixed-length and variable-length string types.
</p></li></ul>
</div>
<h4><a name="idm139684848175904"></a>Statements and Functions</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Full operator and function support in the
          <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> list and
          <code class="literal">WHERE</code> clause of queries. For example:
        </p><pre class="programlisting">
mysql&gt; <strong class="userinput"><code>SELECT CONCAT(first_name, ' ', last_name)</code></strong>
    -&gt; <strong class="userinput"><code>FROM citizen</code></strong>
    -&gt; <strong class="userinput"><code>WHERE income/dependents &gt; 10000 AND age &gt; 30;</code></strong>
</pre></li><li class="listitem"><p>
          Full support for SQL <code class="literal">GROUP BY</code> and
          <code class="literal">ORDER BY</code> clauses. Support for group
          functions (<a class="link" href="functions.html#function_count"><code class="literal">COUNT()</code></a>,
          <a class="link" href="functions.html#function_avg"><code class="literal">AVG()</code></a>,
          <a class="link" href="functions.html#function_std"><code class="literal">STD()</code></a>,
          <a class="link" href="functions.html#function_sum"><code class="literal">SUM()</code></a>,
          <a class="link" href="functions.html#function_max"><code class="literal">MAX()</code></a>,
          <a class="link" href="functions.html#function_min"><code class="literal">MIN()</code></a>, and
          <a class="link" href="functions.html#function_group-concat"><code class="literal">GROUP_CONCAT()</code></a>).
        </p></li><li class="listitem"><p>
          Support for <code class="literal">LEFT OUTER JOIN</code> and
          <code class="literal">RIGHT OUTER JOIN</code> with both standard SQL and
          ODBC syntax.
        </p></li><li class="listitem"><p>
          Support for aliases on tables and columns as required by
          standard SQL.
        </p></li><li class="listitem"><p>
          Support for <a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE Syntax"><code class="literal">DELETE</code></a>,
          <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a>,
          <a class="link" href="sql-syntax.html#replace" title="13.2.8 REPLACE Syntax"><code class="literal">REPLACE</code></a>, and
          <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a> to return the number of
          rows that were changed (affected), or to return the number of
          rows matched instead by setting a flag when connecting to the
          server.
        </p></li><li class="listitem"><p>
          Support for MySQL-specific <a class="link" href="sql-syntax.html#show" title="13.7.5 SHOW Syntax"><code class="literal">SHOW</code></a>
          statements that retrieve information about databases, storage
          engines, tables, and indexes. Support for the
          <code class="literal">INFORMATION_SCHEMA</code> database, implemented
          according to standard SQL.
        </p></li><li class="listitem"><p>
          An <a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN Syntax"><code class="literal">EXPLAIN</code></a> statement to show
          how the optimizer resolves a query.
        </p></li><li class="listitem"><p>
          Independence of function names from table or column names. For
          example, <code class="literal">ABS</code> is a valid column name. The
          only restriction is that for a function call, no spaces are
          permitted between the function name and the
          <span class="quote">“<span class="quote"><code class="literal">(</code></span>”</span> that follows it. See
          <a class="xref" href="language-structure.html#keywords" title="9.3 Keywords and Reserved Words">Section 9.3, “Keywords and Reserved Words”</a>.
        </p></li><li class="listitem"><p>
          You can refer to tables from different databases in the same
          statement.
</p></li></ul>
</div>
<h4><a name="idm139684848144768"></a>Security</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          A privilege and password system that is very flexible and
          secure, and that enables host-based verification.
        </p></li><li class="listitem"><p>
          Password security by encryption of all password traffic when
          you connect to a server.
</p></li></ul>
</div>
<h4><a name="idm139684848141936"></a>Scalability and Limits</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Support for large databases. We use MySQL Server with
          databases that contain 50 million records. We also know of
          users who use MySQL Server with 200,000 tables and about
          5,000,000,000 rows.
        </p></li><li class="listitem"><p>
          Support for up to 64 indexes per table. Each index may consist
          of 1 to 16 columns or parts of columns. The maximum index
          width for <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a> tables is either
          767 bytes or 3072 bytes. See
          <a class="xref" href="innodb-storage-engine.html#innodb-restrictions" title="14.8.1.7 Limits on InnoDB Tables">Section 14.8.1.7, “Limits on InnoDB Tables”</a>. The maximum index width
          for <a class="link" href="storage-engines.html#myisam-storage-engine" title="15.2 The MyISAM Storage Engine"><code class="literal">MyISAM</code></a> tables is 1000 bytes.
          See <a class="xref" href="storage-engines.html#myisam-storage-engine" title="15.2 The MyISAM Storage Engine">Section 15.2, “The MyISAM Storage Engine”</a>. An index may use
          a prefix of a column for <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">CHAR</code></a>,
          <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a>,
          <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">BLOB</code></a>, or
          <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">TEXT</code></a> column types.
</p></li></ul>
</div>
<h4><a name="idm139684848131936"></a>Connectivity</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Clients can connect to MySQL Server using several protocols:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
              Clients can connect using TCP/IP sockets on any platform.
            </p></li><li class="listitem"><p>
              On Windows systems, clients can connect using named pipes
              if the server is started with the
              <a class="link" href="server-administration.html#option_mysqld_enable-named-pipe"><code class="option">--enable-named-pipe</code></a> option.
              Windows servers also support shared-memory connections if
              started with the
              <a class="link" href="server-administration.html#option_mysqld_shared-memory"><code class="option">--shared-memory</code></a> option.
              Clients can connect through shared memory by using the
              <code class="option">--protocol=memory</code> option.
            </p></li><li class="listitem"><p>
              On Unix systems, clients can connect using Unix domain
              socket files.
</p></li></ul>
</div>
</li><li class="listitem"><p>
          MySQL client programs can be written in many languages. A
          client library written in C is available for clients written
          in C or C++, or for any language that provides C bindings.
        </p></li><li class="listitem"><p>
          APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and
          Tcl are available, enabling MySQL clients to be written in
          many languages. See <a class="xref" href="connectors-apis.html" title="Chapter 27 Connectors and APIs">Chapter 27, <i>Connectors and APIs</i></a>.
        </p></li><li class="listitem"><p>
          The Connector/ODBC (MyODBC) interface provides MySQL support
          for client programs that use ODBC (Open Database Connectivity)
          connections. For example, you can use MS Access to connect to
          your MySQL server. Clients can be run on Windows or Unix.
          Connector/ODBC source is available. All ODBC 2.5 functions are
          supported, as are many others. See
          <a class="ulink" href="http://dev.mysql.com/doc/connector-odbc/en/" target="_top">MySQL Connector/ODBC Developer Guide</a>.
        </p></li><li class="listitem"><p>
          The Connector/J interface provides MySQL support for Java
          client programs that use JDBC connections. Clients can be run
          on Windows or Unix. Connector/J source is available. See
          <a class="ulink" href="http://dev.mysql.com/doc/connector-j/5.1/en/" target="_top">MySQL Connector/J 5.1 Developer Guide</a>.
        </p></li><li class="listitem"><p>
          MySQL Connector/NET enables developers to easily create .NET applications
          that require secure, high-performance data connectivity with
          MySQL. It implements the required ADO.NET interfaces and
          integrates into ADO.NET aware tools. Developers can build
          applications using their choice of .NET languages. MySQL Connector/NET is
          a fully managed ADO.NET driver written in 100% pure C#. See
          <a class="ulink" href="http://dev.mysql.com/doc/connector-net/en/" target="_top">MySQL Connector/NET Developer Guide</a>.
</p></li></ul>
</div>
<h4><a name="idm139684848116752"></a>Localization</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          The server can provide error messages to clients in many
          languages. See <a class="xref" href="charset.html#error-message-language" title="10.11 Setting the Error Message Language">Section 10.11, “Setting the Error Message Language”</a>.
        </p></li><li class="listitem"><p>
          Full support for several different character sets, including
          <code class="literal">latin1</code> (cp1252), <code class="literal">german</code>,
          <code class="literal">big5</code>, <code class="literal">ujis</code>, several
          Unicode character sets, and more. For example, the
          Scandinavian characters <span class="quote">“<span class="quote"><code class="literal">å</code></span>”</span>,
          <span class="quote">“<span class="quote"><code class="literal">ä</code></span>”</span> and
          <span class="quote">“<span class="quote"><code class="literal">ö</code></span>”</span> are permitted in table
          and column names.
        </p></li><li class="listitem"><p>
          All data is saved in the chosen character set.
        </p></li><li class="listitem"><p>
          Sorting and comparisons are done according to the default
          character set and collation. is possible to change this when
          the MySQL server is started (see
          <a class="xref" href="charset.html#charset-server" title="10.3.2 Server Character Set and Collation">Section 10.3.2, “Server Character Set and Collation”</a>). To see an example of very
          advanced sorting, look at the Czech sorting code. MySQL Server
          supports many different character sets that can be specified
          at compile time and runtime.
        </p></li><li class="listitem"><p>
          The server time zone can be changed dynamically, and
          individual clients can specify their own time zone. See
          <a class="xref" href="server-administration.html#time-zone-support" title="5.1.12 MySQL Server Time Zone Support">Section 5.1.12, “MySQL Server Time Zone Support”</a>.
</p></li></ul>
</div>
<h4><a name="idm139684848104656"></a>Clients and Tools</h4>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          MySQL includes several client and utility programs. These
          include both command-line programs such as
          <a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump — A Database Backup Program"><span class="command"><strong>mysqldump</strong></span></a> and
          <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin</strong></span></a>, and graphical programs such as
          <a class="link" href="workbench.html" title="Chapter 30 MySQL Workbench">MySQL Workbench</a>.
        </p></li><li class="listitem"><p>
          MySQL Server has built-in support for SQL statements to check,
          optimize, and repair tables. These statements are available
          from the command line through the
          <a class="link" href="programs.html#mysqlcheck" title="4.5.3 mysqlcheck — A Table Maintenance Program"><span class="command"><strong>mysqlcheck</strong></span></a> client. MySQL also includes
          <a class="link" href="programs.html#myisamchk" title="4.6.3 myisamchk — MyISAM Table-Maintenance Utility"><span class="command"><strong>myisamchk</strong></span></a>, a very fast command-line utility
          for performing these operations on <code class="literal">MyISAM</code>
          tables. See <a class="xref" href="programs.html" title="Chapter 4 MySQL Programs">Chapter 4, <i>MySQL Programs</i></a>.
        </p></li><li class="listitem"><p>
          MySQL programs can be invoked with the <code class="option">--help</code>
          or <code class="option">-?</code> option to obtain online assistance.
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="history"></a>1.3.3 History of MySQL</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684848093408"></a><a class="indexterm" name="idm139684848092400"></a><a class="indexterm" name="idm139684848091392"></a><a class="indexterm" name="idm139684848090384"></a><a class="indexterm" name="idm139684848088992"></a><a class="indexterm" name="idm139684848087984"></a><p>
      We started out with the intention of using the
      <code class="literal">mSQL</code> database system to connect to our tables
      using our own fast low-level (ISAM) routines. However, after some
      testing, we came to the conclusion that <code class="literal">mSQL</code>
      was not fast enough or flexible enough for our needs. This
      resulted in a new SQL interface to our database but with almost
      the same API interface as <code class="literal">mSQL</code>. This API was
      designed to enable third-party code that was written for use with
      <code class="literal">mSQL</code> to be ported easily for use with MySQL.
    </p><p>
      MySQL is named after co-founder Monty Widenius's daughter, My.
    </p><p>
      The name of the MySQL Dolphin (our logo) is <span class="quote">“<span class="quote">Sakila,</span>”</span>
      which was chosen from a huge list of names suggested by users in
      our <span class="quote">“<span class="quote">Name the Dolphin</span>”</span> contest. The winning name was
      submitted by Ambrose Twebaze, an Open Source software developer
      from Swaziland, Africa. According to Ambrose, the feminine name
      Sakila has its roots in SiSwati, the local language of Swaziland.
      Sakila is also the name of a town in Arusha, Tanzania, near
      Ambrose's country of origin, Uganda.
</p>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="mysql-nutshell"></a>1.4 What Is New in MySQL 5.7</h2>

</div>

</div>

</div>
<a class="indexterm" name="idm139684848080304"></a><a class="indexterm" name="idm139684848079296"></a><a class="indexterm" name="idm139684848078288"></a><p>
      This section summarizes what has been added to, deprecated in, and
      removed from MySQL 5.7. A companion section lists
      MySQL server options and variables that have been added,
      deprecated, or removed in MySQL 5.7. See
      <a class="xref" href="introduction.html#added-deprecated-removed" title="1.5 Server and Status Variables and Options Added, Deprecated, or Removed in MySQL 5.7">Section 1.5, “Server and Status Variables and Options Added, Deprecated, or Removed in
    MySQL 5.7”</a>.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <a class="xref" href="introduction.html#mysql-nutshell-additions" title="Features Added in MySQL 5.7">Features Added in MySQL 5.7</a>
        </p></li><li class="listitem"><p>
          <a class="xref" href="introduction.html#mysql-nutshell-deprecations" title="Features Deprecated in MySQL 5.7">Features Deprecated in MySQL 5.7</a>
        </p></li><li class="listitem"><p>
          <a class="xref" href="introduction.html#mysql-nutshell-removals" title="Features Removed in MySQL 5.7">Features Removed in MySQL 5.7</a>
</p></li></ul>
</div>
<div class="simplesect">
<div class="titlepage">
<div>
<div class="simple">
<h3 class="title"><a name="mysql-nutshell-additions"></a>Features Added in MySQL 5.7</h3>

</div>

</div>

</div>
<p>
        The following features have been added to MySQL
        5.7:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Security improvements. </b>
              These security enhancements were added:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                In MySQL 8.0, <code class="literal">caching_sha2_password</code>
                is the default authentication plugin. To enable MySQL
                5.7 clients to connect to 8.0 servers using accounts
                that authenticate using
                <code class="literal">caching_sha2_password</code>, the MySQL 5.7
                client library and client programs support the
                <code class="literal">caching_sha2_password</code> client-side
                authentication plugin as of MySQL 5.7.23. This improves
                compatibility of MySQL 5.7 with MySQL 8.0 and higher
                servers. See
                <a class="xref" href="security.html#caching-sha2-pluggable-authentication" title="6.5.1.5 Caching SHA-2 Pluggable Authentication">Section 6.5.1.5, “Caching SHA-2 Pluggable Authentication”</a>.
              </p></li><li class="listitem"><p>
                The server now requires account rows in the
                <code class="literal">mysql.user</code> table to have a nonempty
                <code class="literal">plugin</code> column value and disables
                accounts with an empty value. For server upgrade
                instructions, see
                <a class="xref" href="installing.html#upgrading-from-previous-series" title="2.11.1.2 Changes Affecting Upgrades to MySQL 5.7">Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7”</a>. DBAs
                are advised to also convert accounts that use the
                <code class="literal">mysql_old_password</code> authentication
                plugin to use <code class="literal">mysql_native_password</code>
                instead, because support for
                <code class="literal">mysql_old_password</code> has been removed.
                For account upgrade instructions, see
                <a class="xref" href="security.html#account-upgrades" title="6.5.1.3 Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin">Section 6.5.1.3, “Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password
        Plugin”</a>.
              </p></li><li class="listitem"><p>
                MySQL now enables database administrators to establish a
                policy for automatic password expiration: Any user who
                connects to the server using an account for which the
                password is past its permitted lifetime must change the
                password. For more information, see
                <a class="xref" href="security.html#password-management" title="6.3.7 Password Management">Section 6.3.7, “Password Management”</a>.
              </p></li><li class="listitem"><p>
                Administrators can lock and unlock accounts for better
                control over who can log in. For more information, see
                <a class="xref" href="security.html#account-locking" title="6.3.11 User Account Locking">Section 6.3.11, “User Account Locking”</a>.
              </p></li><li class="listitem"><p>
                To make it easier to support secure connections, MySQL
                servers compiled using OpenSSL can automatically
                generate missing SSL and RSA certificate and key files
                at startup. See
                <a class="xref" href="security.html#creating-ssl-rsa-files-using-mysql" title="6.4.3.1 Creating SSL and RSA Certificates and Keys using MySQL">Section 6.4.3.1, “Creating SSL and RSA Certificates and Keys using MySQL”</a>.
              </p><p>
                All servers (whether compiled using OpenSSL or yaSSL),
                if not configured for SSL explicitly, attempt to enable
                SSL automatically at startup if they find the requisite
                SSL files in the data directory. See
                <a class="xref" href="security.html#using-encrypted-connections" title="6.4.1 Configuring MySQL to Use Encrypted Connections">Section 6.4.1, “Configuring MySQL to Use Encrypted Connections”</a>.
              </p><p>
                In addition, MySQL distributions include a
                <a class="link" href="programs.html#mysql-ssl-rsa-setup" title="4.4.5 mysql_ssl_rsa_setup — Create SSL/RSA Files"><span class="command"><strong>mysql_ssl_rsa_setup</strong></span></a> utility that can
                be invoked manually to create SSL and RSA key and
                certificate files. For more information, see
                <a class="xref" href="programs.html#mysql-ssl-rsa-setup" title="4.4.5 mysql_ssl_rsa_setup — Create SSL/RSA Files">Section 4.4.5, “<span class="command"><strong>mysql_ssl_rsa_setup</strong></span> — Create SSL/RSA Files”</a>.
              </p></li><li class="listitem"><p>
                MySQL deployments installed using <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld
                --initialize</strong></span></a> are secure by default. The
                following changes have been implemented as the default
                deployment characteristics:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>
                    The installation process creates only a single
                    <code class="literal">root</code> account,
                    <code class="literal">'root'@'localhost'</code>, automatically
                    generates a random password for this account, and
                    marks the password expired. The MySQL administrator
                    must connect as <code class="literal">root</code> using the
                    random password and assign a new password. (The
                    server writes the random password to the error log.)
                  </p></li><li class="listitem"><p>
                    Installation creates no anonymous-user accounts.
                  </p></li><li class="listitem"><p>
                    Installation creates no <code class="literal">test</code>
                    database.
</p></li></ul>
</div>
<p>
                For more information, see
                <a class="xref" href="installing.html#data-directory-initialization-mysqld" title="2.10.1.1 Initializing the Data Directory Manually Using mysqld">Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld”</a>.
</p></li></ul>
</div>
</li><li class="listitem"><p><b>SQL mode changes. </b>
              Strict SQL mode for transactional storage engines
              (<a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a>) is
              now enabled by default.
            </p><p>
            Implementation for the
            <a class="link" href="server-administration.html#sqlmode_only_full_group_by"><code class="literal">ONLY_FULL_GROUP_BY</code></a> SQL
            mode has been made more sophisticated, to no longer reject
            deterministic queries that previously were rejected. In
            consequence, this mode is now enabled by default, to
            prohibit only nondeterministic queries containing
            expressions not guaranteed to be uniquely determined within
            a group.
          </p><p>
            The
            <a class="link" href="server-administration.html#sqlmode_error_for_division_by_zero"><code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_zero_date"><code class="literal">NO_ZERO_DATE</code></a>, and
            <a class="link" href="server-administration.html#sqlmode_no_zero_in_date"><code class="literal">NO_ZERO_IN_DATE</code></a> SQL modes
            are now deprecated but enabled by default. The long term
            plan is to have them included in strict SQL mode and to
            remove them as explicit modes in a future MySQL release. See
            <a class="xref" href="server-administration.html#sql-mode-changes" title="SQL Mode Changes in MySQL 5.7">SQL Mode Changes in MySQL 5.7</a>.
          </p><p>
            The changes to the default SQL mode result in a default
            <a class="link" href="server-administration.html#sysvar_sql_mode"><code class="literal">sql_mode</code></a> system variable
            value with these modes enabled:
            <a class="link" href="server-administration.html#sqlmode_only_full_group_by"><code class="literal">ONLY_FULL_GROUP_BY</code></a>,
            <a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_zero_in_date"><code class="literal">NO_ZERO_IN_DATE</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_zero_date"><code class="literal">NO_ZERO_DATE</code></a>,
            <a class="link" href="server-administration.html#sqlmode_error_for_division_by_zero"><code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_auto_create_user"><code class="literal">NO_AUTO_CREATE_USER</code></a>, and
            <a class="link" href="server-administration.html#sqlmode_no_engine_substitution"><code class="literal">NO_ENGINE_SUBSTITUTION</code></a>.
          </p></li><li class="listitem"><p><b>Online ALTER TABLE. </b>
              <code class="literal">ALTER TABLE</code> now supports a
              <code class="literal">RENAME INDEX</code> clause that renames an
              index. The change is made in place without a table-copy
              operation. It works for all storage engines. See
              <a class="xref" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax">Section 13.1.8, “ALTER TABLE Syntax”</a>.
            </p></li><li class="listitem"><p><b>ngram and MeCab full-text parser plugins. </b>
              MySQL provides a built-in full-text ngram parser plugin
              that supports Chinese, Japanese, and Korean (CJK), and an
              installable MeCab full-text parser plugin for Japanese.
            </p><p>
            For more information, see
            <a class="xref" href="functions.html#fulltext-search-ngram" title="12.9.8 ngram Full-Text Parser">Section 12.9.8, “ngram Full-Text Parser”</a>, and
            <a class="xref" href="functions.html#fulltext-search-mecab" title="12.9.9 MeCab Full-Text Parser Plugin">Section 12.9.9, “MeCab Full-Text Parser Plugin”</a>.
          </p></li><li class="listitem"><p><b>InnoDB enhancements. </b>
              These <code class="literal">InnoDB</code> enhancements were added:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a> column size can
                be increased using an in-place
                <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a>, as in this
                example:
              </p><pre data-lang="sql" class="programlisting">
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
</pre><p>
                This is true as long as the number of length bytes
                required by a <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a>
                column remains the same. For
                <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a> columns of 0 to
                255 bytes in size, one length byte is required to encode
                the value. For <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a>
                columns of 256 bytes in size or more, two length bytes
                are required. As a result, in-place
                <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a> only supports
                increasing <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a> column
                size from 0 to 255 bytes, or from 256 bytes to a greater
                size. In-place <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER
                TABLE</code></a> does not support increasing the size of
                a <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a> column from
                less than 256 bytes to a size equal to or greater than
                256 bytes. In this case, the number of required length
                bytes changes from 1 to 2, which is only supported by a
                table copy (<code class="literal">ALGORITHM=COPY</code>).
              </p><p>
                Decreasing <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a> size
                using in-place <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER
                TABLE</code></a> is not supported. Decreasing
                <a class="link" href="data-types.html#char" title="11.4.1 The CHAR and VARCHAR Types"><code class="literal">VARCHAR</code></a> size requires a
                table copy (<code class="literal">ALGORITHM=COPY</code>).
              </p><p>
                For more information, see
                <a class="xref" href="innodb-storage-engine.html#innodb-create-index-overview" title="14.13.1 Online DDL Operations">Section 14.13.1, “Online DDL Operations”</a>.
              </p></li><li class="listitem"><p>
                DDL performance for <code class="literal">InnoDB</code> temporary
                tables is improved through optimization of
                <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE TABLE</code></a>,
                <a class="link" href="sql-syntax.html#drop-table" title="13.1.29 DROP TABLE Syntax"><code class="literal">DROP TABLE</code></a>,
                <a class="link" href="sql-syntax.html#truncate-table" title="13.1.34 TRUNCATE TABLE Syntax"><code class="literal">TRUNCATE TABLE</code></a>, and
                <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a> statements.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> temporary table metadata is no
                longer stored to <code class="literal">InnoDB</code> system
                tables. Instead, a new table,
                <code class="literal">INNODB_TEMP_TABLE_INFO</code>, provides
                users with a snapshot of active temporary tables. The
                table contains metadata and reports on all user and
                system-created temporary tables that are active within a
                given <code class="literal">InnoDB</code> instance. The table is
                created when the first <code class="literal">SELECT</code>
                statement is run against it.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> now supports MySQL-supported
                spatial data types. Prior to this release,
                <code class="literal">InnoDB</code> would store spatial data as
                binary <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">BLOB</code></a> data.
                <code class="literal">BLOB</code> remains the underlying data type
                but spatial data types are now mapped to a new
                <code class="literal">InnoDB</code> internal data type,
                <code class="literal">DATA_GEOMETRY</code>.
              </p></li><li class="listitem"><p>
                There is now a separate tablespace for all
                non-compressed <code class="literal">InnoDB</code> temporary
                tables. The new tablespace is always recreated on server
                startup and is located in <code class="literal">DATADIR</code> by
                default. A newly added configuration file option,
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_temp_data_file_path"><code class="literal">innodb_temp_data_file_path</code></a>,
                allows for a user-defined temporary data file path.
              </p></li><li class="listitem"><p>
                <a class="link" href="programs.html#innochecksum" title="4.6.1 innochecksum — Offline InnoDB File Checksum Utility"><span class="command"><strong>innochecksum</strong></span></a> functionality is
                enhanced with several new options and extended
                capabilities. See <a class="xref" href="programs.html#innochecksum" title="4.6.1 innochecksum — Offline InnoDB File Checksum Utility">Section 4.6.1, “<span class="command"><strong>innochecksum</strong></span> — Offline InnoDB File Checksum Utility”</a>.
              </p></li><li class="listitem"><p>
                A new type of non-redo undo log for both normal and
                compressed temporary tables and related objects now
                resides in the temporary tablespace. For more
                information, see
                <a class="xref" href="innodb-storage-engine.html#innodb-temporary-table-undo-logs" title="Temporary Table Undo Logs">Temporary Table Undo Logs</a>.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> buffer pool dump and load
                operations are enhanced. A new system variable,
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_buffer_pool_dump_pct"><code class="literal">innodb_buffer_pool_dump_pct</code></a>,
                allows you to specify the percentage of most recently
                used pages in each buffer pool to read out and dump.
                When there is other I/O activity being performed by
                <code class="literal">InnoDB</code> background tasks,
                <code class="literal">InnoDB</code> attempts to limit the number
                of buffer pool load operations per second using the
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_io_capacity"><code class="literal">innodb_io_capacity</code></a>
                setting.
              </p></li><li class="listitem"><p>
                Support is added to <code class="literal">InnoDB</code> for
                full-text parser plugins. For information about
                full-text parser plugins, see
                <a class="xref" href="extending-mysql.html#full-text-plugin-type" title="Full-Text Parser Plugins">Full-Text Parser Plugins</a> and
                <a class="xref" href="extending-mysql.html#writing-full-text-plugins" title="28.2.4.4 Writing Full-Text Parser Plugins">Section 28.2.4.4, “Writing Full-Text Parser Plugins”</a>.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> supports multiple page cleaner
                threads for flushing dirty pages from buffer pool
                instances. A new system variable,
                <code class="literal">innodb_page_cleaners</code>, is used to
                specify the number of page cleaner threads. The default
                value of <code class="literal">1</code> maintains the previous
                configuration in which there is a single page cleaner
                thread. This enhancement builds on work completed in
                MySQL 5.6, which introduced a single page cleaner thread
                to offload buffer pool flushing work from the
                <code class="literal">InnoDB</code> master thread.
              </p></li><li class="listitem"><p>
                <a class="link" href="innodb-storage-engine.html#innodb-online-ddl" title="14.13 InnoDB and Online DDL">Online DDL</a>
                support is extended to the following operations for
                regular and partitioned <code class="literal">InnoDB</code>
                tables:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>
                    <a class="link" href="sql-syntax.html#optimize-table" title="13.7.2.4 OPTIMIZE TABLE Syntax"><code class="literal">OPTIMIZE TABLE</code></a>
                  </p></li><li class="listitem"><p>
                    <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER
                    TABLE ... FORCE</code></a>
                  </p></li><li class="listitem"><p>
                    <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER
                    TABLE ... ENGINE=INNODB</code></a> (when run on an
                    <code class="literal">InnoDB</code> table)
                  </p><p>
                    <a class="link" href="innodb-storage-engine.html#innodb-online-ddl" title="14.13 InnoDB and Online DDL">Online DDL</a>
                    support reduces table rebuild time and permits
                    concurrent DML. See
                    <a class="xref" href="innodb-storage-engine.html#innodb-create-index-overview" title="14.13.1 Online DDL Operations">Section 14.13.1, “Online DDL Operations”</a>.
</p></li></ul>
</div>
</li><li class="listitem"><p>
                The Fusion-io Non-Volatile Memory (NVM) file system on
                Linux provides <a class="link" href="glossary.html#glos_atomic" title="atomic">atomic</a>
                write capability, which makes the
                <code class="literal">InnoDB</code>
                <a class="link" href="glossary.html#glos_doublewrite_buffer" title="doublewrite buffer">doublewrite
                buffer</a> redundant. The <code class="literal">InnoDB</code>
                doublewrite buffer is automatically disabled for system
                tablespace files
                (<a class="link" href="glossary.html#glos_ibdata_file" title="ibdata file">ibdata files</a>)
                located on Fusion-io devices that support atomic writes.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> supports the
                <a class="link" href="glossary.html#glos_transportable_tablespace" title="transportable tablespace">Transportable
                Tablespace</a> feature for partitioned
                <code class="literal">InnoDB</code> tables and individual
                <code class="literal">InnoDB</code> table partitions. This
                enhancement eases backup procedures for partitioned
                tables and enables copying of partitioned tables and
                individual table partitions between MySQL instances. For
                additional information, see
                <a class="xref" href="innodb-storage-engine.html#tablespace-copying" title="14.7.6 Copying File-Per-Table Tablespaces to Another Instance">Section 14.7.6, “Copying File-Per-Table Tablespaces to Another Instance”</a>.
              </p></li><li class="listitem"><p>
                The
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_buffer_pool_size"><code class="literal">innodb_buffer_pool_size</code></a>
                parameter is dynamic, allowing you to resize the buffer
                pool without restarting the server. The resizing
                operation, which involves moving pages to a new location
                in memory, is performed in chunks. Chunk size is
                configurable using the new
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_buffer_pool_chunk_size"><code class="literal">innodb_buffer_pool_chunk_size</code></a>
                configuration option. You can monitor resizing progress
                using the new
                <a class="link" href="server-administration.html#statvar_Innodb_buffer_pool_resize_status"><code class="literal">Innodb_buffer_pool_resize_status</code></a>
                status variable. For more information, see
                <a class="xref" href="innodb-storage-engine.html#innodb-buffer-pool-online-resize" title="Configuring InnoDB Buffer Pool Size Online">Configuring InnoDB Buffer Pool Size Online</a>.
              </p></li><li class="listitem"><p>
                Multithreaded page cleaner support
                (<a class="link" href="innodb-storage-engine.html#sysvar_innodb_page_cleaners"><code class="literal">innodb_page_cleaners</code></a>)
                is extended to shutdown and recovery phases.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> supports indexing of spatial
                data types using <code class="literal">SPATIAL</code> indexes,
                including use of
                <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE
                ... ALGORITHM=INPLACE</code></a> for online operations
                (<code class="literal">ADD SPATIAL INDEX</code>).
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> performs a bulk load when
                creating or rebuilding indexes. This method of index
                creation is known as a <span class="quote">“<span class="quote">sorted index
                build</span>”</span>. This enhancement, which improves the
                efficiency of index creation, also applies to full-text
                indexes. A new global configuration option,
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_fill_factor"><code class="literal">innodb_fill_factor</code></a>,
                defines the percentage of space on each page that is
                filled with data during a sorted index build, with the
                remaining space reserved for future index growth. For
                more information, see
                <a class="xref" href="innodb-storage-engine.html#sorted-index-builds" title="14.8.2.3 Sorted Index Builds">Section 14.8.2.3, “Sorted Index Builds”</a>.
              </p></li><li class="listitem"><p>
                A new log record type
                (<code class="literal">MLOG_FILE_NAME</code>) is used to identify
                tablespaces that have been modified since the last
                checkpoint. This enhancement simplifies tablespace
                discovery during crash recovery and eliminates scans on
                the file system prior to redo log application. For more
                information about the benefits of this enhancement, see
                <a class="xref" href="innodb-storage-engine.html#innodb-recovery-tablespace-discovery" title="Tablespace Discovery During Crash Recovery">Tablespace Discovery During Crash Recovery</a>.
              </p><p>
                This enhancement changes the redo log format, requiring
                that MySQL be shut down cleanly before upgrading to or
                downgrading from MySQL 5.7.5.
              </p></li><li class="listitem"><p>
                You can truncate undo logs that reside in undo
                tablespaces. This feature is enabled using the
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_undo_log_truncate"><code class="literal">innodb_undo_log_truncate</code></a>
                configuration option. For more information, see
                <a class="xref" href="innodb-storage-engine.html#truncate-undo-tablespace" title="14.7.8 Truncating Undo Tablespaces">Section 14.7.8, “Truncating Undo Tablespaces”</a>.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> supports native partitioning.
                Previously, <code class="literal">InnoDB</code> relied on the
                <code class="literal">ha_partition</code> handler, which creates a
                handler object for each partition. With native
                partitioning, a partitioned <code class="literal">InnoDB</code>
                table uses a single partition-aware handler object. This
                enhancement reduces the amount of memory required for
                partitioned <code class="literal">InnoDB</code> tables.
              </p><p>
                As of MySQL 5.7.9, <a class="link" href="programs.html#mysql-upgrade" title="4.4.7 mysql_upgrade — Check and Upgrade MySQL Tables"><span class="command"><strong>mysql_upgrade</strong></span></a>
                looks for and attempts to upgrade partitioned
                <code class="literal">InnoDB</code> tables that were created using
                the <code class="literal">ha_partition</code> handler. Also in
                MySQL 5.7.9 and later, you can upgrade such tables by
                name in the <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> client using
                <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE
                ... UPGRADE PARTITIONING</code></a>.
              </p></li><li class="listitem"><p>
                <code class="literal">InnoDB</code> supports the creation of
                general tablespaces using <a class="link" href="sql-syntax.html#create-tablespace" title="13.1.19 CREATE TABLESPACE Syntax"><code class="literal">CREATE
                TABLESPACE</code></a> syntax.
              </p><pre data-lang="sql" class="programlisting">CREATE TABLESPACE `tablespace_name`
  ADD DATAFILE 'file_name.ibd'
  [FILE_BLOCK_SIZE = n]</pre><p>
                General tablespaces can be created outside of the MySQL
                data directory, are capable of holding multiple tables,
                and support tables of all row formats.
              </p><p>
                Tables are added to a general tablespace using
                <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE
                TABLE <em class="replaceable"><code>tbl_name</code></em> ... TABLESPACE
                [=] <em class="replaceable"><code>tablespace_name</code></em></code></a>
                or <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER
                TABLE <em class="replaceable"><code>tbl_name</code></em> TABLESPACE [=]
                <em class="replaceable"><code>tablespace_name</code></em></code></a>
                syntax.
              </p><p>
                For more information, see
                <a class="xref" href="innodb-storage-engine.html#general-tablespaces" title="14.7.9 InnoDB General Tablespaces">Section 14.7.9, “InnoDB General Tablespaces”</a>.
              </p></li><li class="listitem"><p>
                <code class="literal">DYNAMIC</code> replaces
                <code class="literal">COMPACT</code> as the implicit default row
                format for <code class="literal">InnoDB</code> tables. A new
                configuration option,
                <a class="link" href="innodb-storage-engine.html#sysvar_innodb_default_row_format"><code class="literal">innodb_default_row_format</code></a>,
                specifies the default <code class="literal">InnoDB</code> row
                format. For more information, see
                <a class="xref" href="innodb-storage-engine.html#innodb-row-format-specification" title="14.11.2 Specifying the Row Format for a Table">Section 14.11.2, “Specifying the Row Format for a Table”</a>.
              </p></li><li class="listitem"><p>
                As of MySQL 5.7.11, <code class="literal">InnoDB</code> supports
                data-at-rest encryption for file-per-table tablespaces.
                Encryption is enabled by specifying the
                <code class="literal">ENCRYPTION</code> option when creating or
                altering an <code class="literal">InnoDB</code> table. This
                feature, referred to as <code class="literal">InnoDB</code>
                tablespace encryption, relies on a
                <code class="literal">keyring</code> plugin for encryption key
                management. For more information, see
                <a class="xref" href="security.html#keyring" title="6.5.4 The MySQL Keyring">Section 6.5.4, “The MySQL Keyring”</a>, and
                <a class="xref" href="innodb-storage-engine.html#innodb-tablespace-encryption" title="14.7.10 InnoDB Tablespace Encryption">Section 14.7.10, “InnoDB Tablespace Encryption”</a>.
              </p></li><li class="listitem"><p>
                As of MySQL 5.7.24, the
                <a class="ulink" href="http://www.zlib.net/" target="_top">zlib library</a>
                version bundled with MySQL was raised from version 1.2.3
                to version 1.2.11. MySQL implements compression with the
                help of the zlib library.
              </p><p>
                If you use <code class="literal">InnoDB</code> compressed tables,
                see <a class="xref" href="installing.html#upgrading-from-previous-series" title="2.11.1.2 Changes Affecting Upgrades to MySQL 5.7">Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7”</a> for
                related upgrade implications.
</p></li></ul>
</div>
</li><li class="listitem"><p><b>JSON support. </b>
              Beginning with MySQL 5.7.8, MySQL supports a native
              <a class="link" href="data-types.html#json" title="11.6 The JSON Data Type"><code class="literal">JSON</code></a> type. JSON values are
              not stored as strings, instead using an internal binary
              format that permits quick read access to document
              elements. JSON documents stored in <code class="literal">JSON</code>
              columns are automatically validated whenever they are
              inserted or updated, with an invalid document producing an
              error. JSON documents are normalized on creation, and can
              be compared using most comparison operators such as
              <code class="literal">=</code>, <code class="literal">&lt;</code>,
              <code class="literal">&lt;=</code>, <code class="literal">&gt;</code>,
              <code class="literal">&gt;=</code>, <code class="literal">&lt;&gt;</code>,
              <code class="literal">!=</code>, and <code class="literal">&lt;=&gt;</code>;
              for information about supported operators as well as
              precedence and other rules that MySQL follows when
              comparing <code class="literal">JSON</code> values, see
              <a class="xref" href="data-types.html#json-comparison" title="Comparison and Ordering of JSON Values">Comparison and Ordering of JSON Values</a>.
            </p><p>
            MySQL 5.7.8 also introduces a number of functions for
            working with <a class="link" href="data-types.html#json" title="11.6 The JSON Data Type"><code class="literal">JSON</code></a> values.
            These functions include those listed here:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                Functions that create <code class="literal">JSON</code> values:
                <a class="link" href="functions.html#function_json-array"><code class="literal">JSON_ARRAY()</code></a>,
                <a class="link" href="functions.html#function_json-merge"><code class="literal">JSON_MERGE()</code></a>, and
                <a class="link" href="functions.html#function_json-object"><code class="literal">JSON_OBJECT()</code></a>. See
                <a class="xref" href="functions.html#json-creation-functions" title="12.16.2 Functions That Create JSON Values">Section 12.16.2, “Functions That Create JSON Values”</a>.
              </p></li><li class="listitem"><p>
                Functions that search <code class="literal">JSON</code> values:
                <a class="link" href="functions.html#function_json-contains"><code class="literal">JSON_CONTAINS()</code></a>,
                <a class="link" href="functions.html#function_json-contains-path"><code class="literal">JSON_CONTAINS_PATH()</code></a>,
                <a class="link" href="functions.html#function_json-extract"><code class="literal">JSON_EXTRACT()</code></a>,
                <a class="link" href="functions.html#function_json-keys"><code class="literal">JSON_KEYS()</code></a>, and
                <a class="link" href="functions.html#function_json-search"><code class="literal">JSON_SEARCH()</code></a>. See
                <a class="xref" href="functions.html#json-search-functions" title="12.16.3 Functions That Search JSON Values">Section 12.16.3, “Functions That Search JSON Values”</a>.
              </p></li><li class="listitem"><p>
                Functions that modify <code class="literal">JSON</code> values:
                <a class="link" href="functions.html#function_json-append"><code class="literal">JSON_APPEND()</code></a>,
                <a class="link" href="functions.html#function_json-array-append"><code class="literal">JSON_ARRAY_APPEND()</code></a>,
                <a class="link" href="functions.html#function_json-array-insert"><code class="literal">JSON_ARRAY_INSERT()</code></a>,
                <a class="link" href="functions.html#function_json-insert"><code class="literal">JSON_INSERT()</code></a>,
                <a class="link" href="functions.html#function_json-quote"><code class="literal">JSON_QUOTE()</code></a>,
                <a class="link" href="functions.html#function_json-remove"><code class="literal">JSON_REMOVE()</code></a>,
                <a class="link" href="functions.html#function_json-replace"><code class="literal">JSON_REPLACE()</code></a>,
                <a class="link" href="functions.html#function_json-set"><code class="literal">JSON_SET()</code></a>, and
                <a class="link" href="functions.html#function_json-unquote"><code class="literal">JSON_UNQUOTE()</code></a>. See
                <a class="xref" href="functions.html#json-modification-functions" title="12.16.4 Functions That Modify JSON Values">Section 12.16.4, “Functions That Modify JSON Values”</a>.
              </p></li><li class="listitem"><p>
                Functions that provide information about
                <code class="literal">JSON</code> values:
                <a class="link" href="functions.html#function_json-depth"><code class="literal">JSON_DEPTH()</code></a>,
                <a class="link" href="functions.html#function_json-length"><code class="literal">JSON_LENGTH()</code></a>,
                <a class="link" href="functions.html#function_json-type"><code class="literal">JSON_TYPE()</code></a>, and
                <a class="link" href="functions.html#function_json-valid"><code class="literal">JSON_VALID()</code></a>. See
                <a class="xref" href="functions.html#json-attribute-functions" title="12.16.5 Functions That Return JSON Value Attributes">Section 12.16.5, “Functions That Return JSON Value Attributes”</a>.
</p></li></ul>
</div>
<p>
            In MySQL 5.7.9 and later, you can use
            <a class="link" href="functions.html#operator_json-column-path"><code class="literal"><em class="replaceable"><code>column</code></em>-&gt;<em class="replaceable"><code>path</code></em></code></a>
            as shorthand for
            <a class="link" href="functions.html#function_json-extract"><code class="literal">JSON_EXTRACT(<em class="replaceable"><code>column</code></em>,
            <em class="replaceable"><code>path</code></em>)</code></a>. This works as an
            alias for a column wherever a column identifier can occur in
            an SQL statement, including <code class="literal">WHERE</code>,
            <code class="literal">ORDER BY</code>, and <code class="literal">GROUP BY</code>
            clauses. This includes
            <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a>,
            <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a>,
            <a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE Syntax"><code class="literal">DELETE</code></a>,
            <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE TABLE</code></a>, and other SQL
            statements. The left hand side must be a
            <a class="link" href="data-types.html#json" title="11.6 The JSON Data Type"><code class="literal">JSON</code></a> column identifier (and
            not an alias). The right hand side is a quoted JSON path
            expression which is evaluated against the JSON document
            returned as the column value.
          </p><p>
            MySQL 5.7.22 adds the following JSON functions:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                Two JSON aggregation functions
                <a class="link" href="functions.html#function_json-arrayagg"><code class="literal">JSON_ARRAYAGG()</code></a> and
                <a class="link" href="functions.html#function_json-objectagg"><code class="literal">JSON_OBJECTAGG()</code></a>.
                <code class="literal">JSON_ARRAYAGG()</code> takes a column or
                expression as its argument, and aggregates the result as
                a single <a class="link" href="data-types.html#json" title="11.6 The JSON Data Type"><code class="literal">JSON</code></a> array. The
                expression can evaluate to any MySQL data type; this
                does not have to be a <code class="literal">JSON</code> value.
                <code class="literal">JSON_OBJECTAGG()</code> takes two columns or
                expressions which it interprets as a key and a value; it
                returns the result as a single <code class="literal">JSON</code>
                object. For more information and examples, see
                <a class="xref" href="functions.html#group-by-functions-and-modifiers" title="12.19 Aggregate (GROUP BY) Functions">Section 12.19, “Aggregate (GROUP BY) Functions”</a>.
              </p></li><li class="listitem"><p>
                The JSON utility function
                <a class="link" href="functions.html#function_json-pretty"><code class="literal">JSON_PRETTY()</code></a>, which
                outputs an existing <a class="link" href="data-types.html#json" title="11.6 The JSON Data Type"><code class="literal">JSON</code></a>
                value in an easy-to-read format; each JSON object member
                or array value is printed on a separate line, and a
                child object or array is intended 2 spaces with respect
                to its parent.
              </p><p>
                This function also works with a string that can be
                parsed as a JSON value.
              </p><p>
                See also <a class="xref" href="functions.html#json-utility-functions" title="12.16.6 JSON Utility Functions">Section 12.16.6, “JSON Utility Functions”</a>.
              </p></li><li class="listitem"><p>
                The JSON utility function
                <a class="link" href="functions.html#function_json-storage-size"><code class="literal">JSON_STORAGE_SIZE()</code></a>,
                which returns the storage space in bytes used for the
                binary representation of a JSON document prior to any
                partial update (see previous item).
              </p><p>
                This function also accepts a valid string representation
                of a JSON document. For such a value,
                <code class="literal">JSON_STORAGE_SIZE()</code> returns the space
                used by its binary representation following its
                conversion to a JSON document. For a variable containing
                the string representation of a JSON document,
                <code class="literal">JSON_STORAGE_FREE()</code> returns zero.
                Either function produces an error if its (non-null)
                argument cannot be parsed as a valid JSON document, and
                <code class="literal">NULL</code> if the argument is
                <code class="literal">NULL</code>.
              </p><p>
                For more information and examples, see
                <a class="xref" href="functions.html#json-utility-functions" title="12.16.6 JSON Utility Functions">Section 12.16.6, “JSON Utility Functions”</a>.
              </p></li><li class="listitem"><p>
                A JSON merge function intended to conform to
                <a class="ulink" href="https://tools.ietf.org/html/rfc7396" target="_top">RFC
                7396</a>.
                <a class="link" href="functions.html#function_json-merge-patch"><code class="literal">JSON_MERGE_PATCH()</code></a>, when
                used on 2 JSON objects, merges them into a single JSON
                object that has as members a union of the following
                sets:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>
                    Each member of the first object for which there is
                    no member with the same key in the second object.
                  </p></li><li class="listitem"><p>
                    Each member of the second object for which there is
                    no member having the same key in the first object,
                    and whose value is not the JSON
                    <code class="literal">null</code> literal.
                  </p></li><li class="listitem"><p>
                    Each member having a key that exists in both
                    objects, and whose value in the second object is not
                    the JSON <code class="literal">null</code> literal.
</p></li></ul>
</div>
<p>
                As part of this work, the
                <a class="link" href="functions.html#function_json-merge"><code class="literal">JSON_MERGE()</code></a> function has
                been renamed
                <a class="link" href="functions.html#function_json-merge-preserve"><code class="literal">JSON_MERGE_PRESERVE()</code></a>.
                <code class="literal">JSON_MERGE()</code> continues to be
                recognized as an alias for
                <code class="literal">JSON_MERGE_PRESERVE()</code> in MySQL
                5.7, but is now deprecated and is subject
                to removal in a future version of MySQL.
              </p><p>
                For more information and examples, see
                <a class="xref" href="functions.html#json-modification-functions" title="12.16.4 Functions That Modify JSON Values">Section 12.16.4, “Functions That Modify JSON Values”</a>.
</p></li></ul>
</div>
<p>
            See <a class="xref" href="functions.html#json-search-functions" title="12.16.3 Functions That Search JSON Values">Section 12.16.3, “Functions That Search JSON Values”</a>, for more
            information about <code class="literal">-&gt;</code> and
            <code class="literal">JSON_EXTRACT()</code>. For information about
            JSON path support in MySQL 5.7, see
            <a class="xref" href="data-types.html#json-paths" title="Searching and Modifying JSON Values">Searching and Modifying JSON Values</a>. See also
            <a class="xref" href="sql-syntax.html#json-column-indirect-index" title="Indexing a Generated Column to Provide a JSON Column Index">Indexing a Generated Column to Provide a JSON Column Index</a>.
          </p></li><li class="listitem"><p><b>System and status variables. </b>
              System and status variable information is now available in
              Performance Schema tables, in preference to use of
              <code class="literal">INFORMATION_SCHEMA</code> tables to obtain
              these variable. This also affects the operation of the
              <a class="link" href="sql-syntax.html#show-variables" title="13.7.5.39 SHOW VARIABLES Syntax"><code class="literal">SHOW VARIABLES</code></a> and
              <a class="link" href="sql-syntax.html#show-status" title="13.7.5.35 SHOW STATUS Syntax"><code class="literal">SHOW STATUS</code></a> statements. The
              value of the
              <a class="link" href="server-administration.html#sysvar_show_compatibility_56"><code class="literal">show_compatibility_56</code></a>
              system variable affects the output produced from and
              privileges required for system and status variable
              statements and tables. For details, see the description of
              that variable in
              <a class="xref" href="server-administration.html#server-system-variables" title="5.1.7 Server System Variables">Section 5.1.7, “Server System Variables”</a>.
</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

<div class="admon-title">
Note
</div>
<p>
              The default for
              <a class="link" href="server-administration.html#sysvar_show_compatibility_56"><code class="literal">show_compatibility_56</code></a> is
              <code class="literal">OFF</code>. Applications that require 5.6
              behavior should set this variable to <code class="literal">ON</code>
              until such time as they have been migrated to the new
              behavior for system variables and status variables. See
              <a class="xref" href="performance-schema.html#performance-schema-variable-table-migration" title="25.19 Migrating to Performance Schema System and Status Variable Tables">Section 25.19, “Migrating to Performance Schema System and Status Variable Tables”</a>
</p>
</div>
</li><li class="listitem"><p><b>sys schema. </b>
              MySQL distributions now include the
              <a class="link" href="sys-schema.html" title="Chapter 26 MySQL sys Schema"><code class="literal">sys</code></a> schema, which is a set
              of objects that help DBAs and developers interpret data
              collected by the Performance Schema.
              <a class="link" href="sys-schema.html" title="Chapter 26 MySQL sys Schema"><code class="literal">sys</code></a> schema objects can be
              used for typical tuning and diagnosis use cases. For more
              information, see <a class="xref" href="sys-schema.html" title="Chapter 26 MySQL sys Schema">Chapter 26, <i>MySQL sys Schema</i></a>.
            </p></li><li class="listitem"><p><b>Condition handling. </b>
              MySQL now supports stacked diagnostics areas. When the
              diagnostics area stack is pushed, the first (current)
              diagnostics area becomes the second (stacked) diagnostics
              area and a new current diagnostics area is created as a
              copy of it. Within a condition handler, executed
              statements modify the new current diagnostics area, but
              <a class="link" href="sql-syntax.html#get-diagnostics" title="13.6.7.3 GET DIAGNOSTICS Syntax"><code class="literal">GET
              STACKED DIAGNOSTICS</code></a> can be used to inspect the
              stacked diagnostics area to obtain information about the
              condition that caused the handler to activate, independent
              of current conditions within the handler itself.
              (Previously, there was a single diagnostics area. To
              inspect handler-activating conditions within a handler, it
              was necessary to check this diagnostics area before
              executing any statements that could change it.) See
              <a class="xref" href="sql-syntax.html#get-diagnostics" title="13.6.7.3 GET DIAGNOSTICS Syntax">Section 13.6.7.3, “GET DIAGNOSTICS Syntax”</a>, and
              <a class="xref" href="sql-syntax.html#diagnostics-area" title="13.6.7.7 The MySQL Diagnostics Area">Section 13.6.7.7, “The MySQL Diagnostics Area”</a>.
            </p></li><li class="listitem"><p><b>Optimizer. </b>
              These optimizer enhancements were added:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                <a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN Syntax"><code class="literal">EXPLAIN</code></a> can be used to
                obtain the execution plan for an explainable statement
                executing in a named connection:
              </p><pre data-lang="sql" class="programlisting">
EXPLAIN [<em class="replaceable"><code>options</code></em>] FOR CONNECTION <em class="replaceable"><code>connection_id</code></em>;
</pre><p>
                For more information, see
                <a class="xref" href="optimization.html#explain-for-connection" title="8.8.4 Obtaining Execution Plan Information for a Named Connection">Section 8.8.4, “Obtaining Execution Plan Information for a Named Connection”</a>.
              </p></li><li class="listitem"><p>
                It is possible to provide hints to the optimizer within
                individual SQL statements, which enables finer control
                over statement execution plans than can be achieved
                using the
                <a class="link" href="server-administration.html#sysvar_optimizer_switch"><code class="literal">optimizer_switch</code></a> system
                variable. Hints are also permitted in statements used
                with <a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN Syntax"><code class="literal">EXPLAIN</code></a>, enabling
                you to see how hints affect execution plans. For more
                information, see <a class="xref" href="optimization.html#optimizer-hints" title="8.9.2 Optimizer Hints">Section 8.9.2, “Optimizer Hints”</a>.
</p></li></ul>
</div>
</li><li class="listitem"><p><b>Triggers. </b>
              Previously, a table could have at most one trigger for
              each combination of trigger event
              (<a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a>,
              <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a>,
              <a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE Syntax"><code class="literal">DELETE</code></a>) and action time
              (<code class="literal">BEFORE</code>, <code class="literal">AFTER</code>).
              This limitation has been lifted and multiple triggers are
              permitted. For more information, see
              <a class="xref" href="stored-programs-views.html#triggers" title="23.3 Using Triggers">Section 23.3, “Using Triggers”</a>.
            </p></li><li class="listitem"><p><b>Logging. </b>
              These logging enhancements were added:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                Previously, on Unix and Unix-like systems, MySQL support
                for sending the server error log to
                <code class="literal">syslog</code> was implemented by having
                <a class="link" href="programs.html#mysqld-safe" title="4.3.2 mysqld_safe — MySQL Server Startup Script"><span class="command"><strong>mysqld_safe</strong></span></a> capture server error
                output and pass it to <code class="literal">syslog</code>. The
                server now includes native <code class="literal">syslog</code>
                support, which has been extended to include Windows. For
                more information about sending server error output to
                <code class="literal">syslog</code>, see
                <a class="xref" href="server-administration.html#error-log" title="5.4.2 The Error Log">Section 5.4.2, “The Error Log”</a>.
              </p></li><li class="listitem"><p>
                The <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> client now has a
                <a class="link" href="programs.html#option_mysql_syslog"><code class="option">--syslog</code></a> option that
                causes interactive statements to be sent to the system
                <code class="literal">syslog</code> facility. Logging is
                suppressed for statements that match the default
                <span class="quote">“<span class="quote">ignore</span>”</span> pattern list
                (<code class="literal">"*IDENTIFIED*:*PASSWORD*"</code>), as well
                as statements that match any patterns specified using
                the <a class="link" href="programs.html#option_mysql_histignore"><code class="option">--histignore</code></a> option.
                See <a class="xref" href="programs.html#mysql-logging" title="4.5.1.3 mysql Logging">Section 4.5.1.3, “mysql Logging”</a>.
</p></li></ul>
</div>
</li><li class="listitem"><p><b>Generated Columns. </b>
              MySQL now supports the specification of generated columns
              in <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE TABLE</code></a> and
              <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a> statements.
              Values of a generated column are computed from an
              expression specified at column creation time. Generated
              columns can be virtual (computed <span class="quote">“<span class="quote">on the fly</span>”</span>
              when rows are read) or stored (computed when rows are
              inserted or updated). For more information, see
              <a class="xref" href="sql-syntax.html#create-table-generated-columns" title="13.1.18.8 CREATE TABLE and Generated Columns">Section 13.1.18.8, “CREATE TABLE and Generated Columns”</a>.
            </p></li><li class="listitem"><p><b>mysql client. </b>
              Previously, <span class="keycap"><strong>Control+C</strong></span> in mysql
              interrupted the current statement if there was one, or
              exited mysql if not. Now <span class="keycap"><strong>Control+C</strong></span>
              interrupts the current statement if there was one, or
              cancels any partial input line otherwise, but does not
              exit.
            </p></li><li class="listitem"><p><b>Database name rewriting with mysqlbinlog. </b>
              Renaming of databases by <a class="link" href="programs.html#mysqlbinlog" title="4.6.7 mysqlbinlog — Utility for Processing Binary Log Files"><span class="command"><strong>mysqlbinlog</strong></span></a>
              when reading from binary logs written using the row-based
              format is now supported using the
              <a class="link" href="programs.html#option_mysqlbinlog_rewrite-db"><code class="option">--rewrite-db</code></a> option
              added in MySQL 5.7.1.
            </p><p>
            This option uses the format
            <code class="option">--rewrite-db='<em class="replaceable"><code>dboldname</code></em>-&gt;<em class="replaceable"><code>dbnewname</code></em>'</code>.
            You can implement multiple rewrite rules, by specifying the
            option multiple times.
          </p></li><li class="listitem"><p><b>HANDLER with partitioned tables. </b>
              The <a class="link" href="sql-syntax.html#handler" title="13.2.4 HANDLER Syntax"><code class="literal">HANDLER</code></a> statement may
              now be used with user-partitioned tables. Such tables may
              use any of the available partitioning types (see
              <a class="xref" href="partitioning.html#partitioning-types" title="22.2 Partitioning Types">Section 22.2, “Partitioning Types”</a>).
            </p></li><li class="listitem"><p><b>Index condition pushdown support for partitioned tables. </b>
              Queries on partitioned tables using the
              <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a> or
              <a class="link" href="storage-engines.html#myisam-storage-engine" title="15.2 The MyISAM Storage Engine"><code class="literal">MyISAM</code></a> storage engine may
              employ the index condition pushdown optimization that was
              introduced in MySQL 5.6. See
              <a class="xref" href="optimization.html#index-condition-pushdown-optimization" title="8.2.1.5 Index Condition Pushdown Optimization">Section 8.2.1.5, “Index Condition Pushdown Optimization”</a>,
              for more information.
            </p></li><li class="listitem"><p><b>WITHOUT VALIDATION support for ALTER TABLE ... EXCHANGE PARTITION. </b>
              As of MySQL 5.7.5,
              <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE
              ... EXCHANGE PARTITION</code></a> syntax includes an
              optional <code class="literal">{WITH|WITHOUT} VALIDATION</code>
              clause. When <code class="literal">WITHOUT VALIDATION</code> is
              specified,
              <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE
              ... EXCHANGE PARTITION</code></a> does not perform
              row-by-row validation when exchanging a populated table
              with the partition, permitting database administrators to
              assume responsibility for ensuring that rows are within
              the boundaries of the partition definition. <code class="literal">WITH
              VALIDATION</code> is the default behavior and need not
              be specified explicitly. For more information, see
              <a class="xref" href="partitioning.html#partitioning-management-exchange" title="22.3.3 Exchanging Partitions and Subpartitions with Tables">Section 22.3.3, “Exchanging Partitions and Subpartitions with Tables”</a>.
            </p></li><li class="listitem"><p><b>Master dump thread improvements. </b>
              The master dump thread was refactored to reduce lock
              contention and improve master throughput. Previous to
              MySQL 5.7.2, the dump thread took a lock on the binary log
              whenever reading an event; in MySQL 5.7.2 and later, this
              lock is held only while reading the position at the end of
              the last successfully written event. This means both that
              multiple dump threads are now able to read concurrently
              from the binary log file, and that dump threads are now
              able to read while clients are writing to the binary log.
            </p></li><li class="listitem"><p><b>Globalization improvements. </b>
              MySQL 5.7.4 includes a <code class="literal">gb18030</code>
              character set that supports the China National Standard
              GB18030 character set. For more information about MySQL
              character set support, see <a class="xref" href="charset.html" title="Chapter 10 Character Sets, Collations, Unicode">Chapter 10, <i>Character Sets, Collations, Unicode</i></a>.
            </p></li><li class="listitem"><p><b>Changing the replication master without STOP SLAVE. </b>
              In MySQL 5.7.4 and later, the strict requirement to
              execute <a class="link" href="sql-syntax.html#stop-slave" title="13.4.2.7 STOP SLAVE Syntax"><code class="literal">STOP SLAVE</code></a> prior to
              issuing any <a class="link" href="sql-syntax.html#change-master-to" title="13.4.2.1 CHANGE MASTER TO Syntax"><code class="literal">CHANGE MASTER
              TO</code></a> statement is removed. Instead of depending on
              whether the slave is stopped, the behavior of
              <code class="literal">CHANGE MASTER TO</code> now depends on the
              states of the slave SQL thread and slave I/O threads;
              which of these threads is stopped or running now
              determines the options that can or cannot be used with a
              <code class="literal">CHANGE MASTER TO</code> statement at a given
              point in time. The rules for making this determination are
              listed here:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                If the SQL thread is stopped, you can execute
                <code class="literal">CHANGE MASTER TO</code> using any
                combination of <code class="literal">RELAY_LOG_FILE</code>,
                <code class="literal">RELAY_LOG_POS</code>, and
                <code class="literal">MASTER_DELAY</code> options, even if the
                slave I/O thread is running. No other options may be
                used with this statement when the I/O thread is running.
              </p></li><li class="listitem"><p>
                If the I/O thread is stopped, you can execute
                <code class="literal">CHANGE MASTER TO</code> using any of the
                options for this statement (in any allowed combination)
                <span class="emphasis"><em>except</em></span>
                <code class="literal">RELAY_LOG_FILE</code>,
                <code class="literal">RELAY_LOG_POS</code>, or
                <code class="literal">MASTER_DELAY</code>, even when the SQL
                thread is running. These three options may not be used
                when the I/O thread is running.
              </p></li><li class="listitem"><p>
                Both the SQL thread and the I/O thread must be stopped
                before issuing <code class="literal">CHANGE MASTER TO ...
                MASTER_AUTO_POSITION = 1</code>.
</p></li></ul>
</div>
<p>
            You can check the current state of the slave SQL and I/O
            threads using <a class="link" href="sql-syntax.html#show-slave-status" title="13.7.5.34 SHOW SLAVE STATUS Syntax"><code class="literal">SHOW SLAVE
            STATUS</code></a>.
          </p><p>
            If you are using statement-based replication and temporary
            tables, it is possible for a <code class="literal">CHANGE MASTER
            TO</code> statement following a <code class="literal">STOP
            SLAVE</code> statement to leave behind temporary tables
            on the slave. As part of this set of improvements, a warning
            is now issued whenever <code class="literal">CHANGE MASTER TO</code>
            is issued following <code class="literal">STOP SLAVE</code> when
            statement-based replication is in use and
            <a class="link" href="server-administration.html#statvar_Slave_open_temp_tables"><code class="literal">Slave_open_temp_tables</code></a>
            remains greater than 0.
          </p><p>
            For more information, see
            <a class="xref" href="sql-syntax.html#change-master-to" title="13.4.2.1 CHANGE MASTER TO Syntax">Section 13.4.2.1, “CHANGE MASTER TO Syntax”</a>, and
            <a class="xref" href="replication.html#replication-solutions-switch" title="16.3.7 Switching Masters During Failover">Section 16.3.7, “Switching Masters During Failover”</a>.
          </p></li><li class="listitem"><p><b>Test suite. </b>
              The MySQL test suite now uses <code class="literal">InnoDB</code> as
              the default storage engine.
            </p></li><li class="listitem"><p><b>Multi-source replication is now possible. </b>
              MySQL Multi-Source Replication adds the ability to
              replicate from multiple masters to a slave. MySQL
              Multi-Source Replication topologies can be used to back up
              multiple servers to a single server, to merge table
              shards, and consolidate data from multiple servers to a
              single server. See
              <a class="xref" href="replication.html#replication-multi-source" title="16.1.4 MySQL Multi-Source Replication">Section 16.1.4, “MySQL Multi-Source Replication”</a>.
            </p><p>
            As part of MySQL Multi-Source Replication, replication
            channels have been added. Replication channels enable a
            slave to open multiple connections to replicate from, with
            each channel being a connection to a master. See
            <a class="xref" href="replication.html#replication-channels" title="16.2.3 Replication Channels">Section 16.2.3, “Replication Channels”</a>.
          </p></li><li class="listitem"><p><b>Group Replication Performance Schema tables. </b>
              MySQL 5.7 adds a number of new tables to the Performance
              Schema to provide information about replication groups and
              channels. These include the following tables:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-applier-configuration-table" title="25.11.11.3 The replication_applier_configuration Table"><code class="literal">replication_applier_configuration</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-applier-status-table" title="25.11.11.4 The replication_applier_status Table"><code class="literal">replication_applier_status</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-applier-status-by-coordinator-table" title="25.11.11.5 The replication_applier_status_by_coordinator Table"><code class="literal">replication_applier_status_by_coordinator</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-applier-status-by-worker-table" title="25.11.11.6 The replication_applier_status_by_worker Table"><code class="literal">replication_applier_status_by_worker</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-connection-configuration-table" title="25.11.11.1 The replication_connection_configuration Table"><code class="literal">replication_connection_configuration</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-connection-status-table" title="25.11.11.2 The replication_connection_status Table"><code class="literal">replication_connection_status</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-group-members-table" title="25.11.11.7 The replication_group_members Table"><code class="literal">replication_group_members</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="performance-schema.html#replication-group-member-stats-table" title="25.11.11.8 The replication_group_member_stats Table"><code class="literal">replication_group_member_stats</code></a>
</p></li></ul>
</div>
<p>
            All of these tables were added in MySQL 5.7.2, except for
            <code class="literal">replication_group_members</code> and
            <code class="literal">replication_group_member_stats</code>, which
            were added in MySQL 5.7.6. For more information, see
            <a class="xref" href="performance-schema.html#performance-schema-replication-tables" title="25.11.11 Performance Schema Replication Tables">Section 25.11.11, “Performance Schema Replication Tables”</a>.
          </p></li><li class="listitem"><p><b>Group Replication SQL. </b>
              The following statements were added in MySQL 5.7.6 for
              controlling Group Replication:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                <a class="link" href="sql-syntax.html#start-group-replication" title="13.4.3.1 START GROUP_REPLICATION Syntax"><code class="literal">START GROUP_REPLICATION</code></a>
              </p></li><li class="listitem"><p>
                <a class="link" href="sql-syntax.html#stop-group-replication" title="13.4.3.2 STOP GROUP_REPLICATION Syntax"><code class="literal">STOP GROUP_REPLICATION</code></a>
</p></li></ul>
</div>
<p>
            For more information, see
            <a class="xref" href="sql-syntax.html#replication-group-sql" title="13.4.3 SQL Statements for Controlling Group Replication">Section 13.4.3, “SQL Statements for Controlling Group Replication”</a>.
</p></li></ul>
</div>

</div>
<div class="simplesect">
<div class="titlepage">
<div>
<div class="simple">
<h3 class="title"><a name="mysql-nutshell-deprecations"></a>Features Deprecated in MySQL 5.7</h3>

</div>

</div>

</div>
<p>
        The following features are deprecated in MySQL 5.7
        and may be or will be removed in a future series. Where
        alternatives are shown, applications should be updated to use
        them.
      </p><p>
        For applications that use features deprecated in MySQL
        5.7 that have been removed in a higher MySQL
        series, statements may fail when replicated from a MySQL
        5.7 master to a higher-series slave, or may have
        different effects on master and slave. To avoid such problems,
        applications that use features deprecated in 5.7
        should be revised to avoid them and use alternatives when
        possible.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            The
            <a class="link" href="server-administration.html#sqlmode_error_for_division_by_zero"><code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_zero_date"><code class="literal">NO_ZERO_DATE</code></a>, and
            <a class="link" href="server-administration.html#sqlmode_no_zero_in_date"><code class="literal">NO_ZERO_IN_DATE</code></a> SQL modes
            are now deprecated but enabled by default. The long term
            plan is to have them included in strict SQL mode and to
            remove them as explicit modes in a future MySQL release.
          </p><p>
            The deprecated
            <a class="link" href="server-administration.html#sqlmode_error_for_division_by_zero"><code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_zero_date"><code class="literal">NO_ZERO_DATE</code></a>, and
            <a class="link" href="server-administration.html#sqlmode_no_zero_in_date"><code class="literal">NO_ZERO_IN_DATE</code></a> SQL modes
            are still recognized so that statements that name them do
            not produce an error, but will be removed in a future
            version of MySQL. To make advance preparation for versions
            of MySQL in which these mode names do not exist,
            applications should be modified to not refer to them. See
            <a class="xref" href="server-administration.html#sql-mode-changes" title="SQL Mode Changes in MySQL 5.7">SQL Mode Changes in MySQL 5.7</a>.
          </p></li><li class="listitem"><p>
            These SQL modes are now deprecated and will be removed in a
            future version of MySQL:
            <a class="link" href="server-administration.html#sqlmode_db2"><code class="literal">DB2</code></a>,
            <a class="link" href="server-administration.html#sqlmode_maxdb"><code class="literal">MAXDB</code></a>,
            <a class="link" href="server-administration.html#sqlmode_mssql"><code class="literal">MSSQL</code></a>,
            <a class="link" href="server-administration.html#sqlmode_mysql323"><code class="literal">MYSQL323</code></a>,
            <a class="link" href="server-administration.html#sqlmode_mysql40"><code class="literal">MYSQL40</code></a>,
            <a class="link" href="server-administration.html#sqlmode_oracle"><code class="literal">ORACLE</code></a>,
            <a class="link" href="server-administration.html#sqlmode_postgresql"><code class="literal">POSTGRESQL</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_field_options"><code class="literal">NO_FIELD_OPTIONS</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_key_options"><code class="literal">NO_KEY_OPTIONS</code></a>,
            <a class="link" href="server-administration.html#sqlmode_no_table_options"><code class="literal">NO_TABLE_OPTIONS</code></a>. These
            deprecations have two implications:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                Assigning a deprecated mode to the
                <a class="link" href="server-administration.html#sysvar_sql_mode"><code class="literal">sql_mode</code></a> system
                variable produces a warning.
              </p></li><li class="listitem"><p>
                With the <a class="link" href="server-administration.html#sqlmode_maxdb"><code class="literal">MAXDB</code></a> SQL
                mode enabled, using <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE
                TABLE</code></a> or <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER
                TABLE</code></a> to add a
                <a class="link" href="data-types.html#datetime" title="11.3.1 The DATE, DATETIME, and TIMESTAMP Types"><code class="literal">TIMESTAMP</code></a> column to a
                table produces a warning.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            Changes to account-management statements make the following
            features obsolete. They are now deprecated:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                Using <a class="link" href="sql-syntax.html#grant" title="13.7.1.4 GRANT Syntax"><code class="literal">GRANT</code></a> to create
                users. Instead, use <a class="link" href="sql-syntax.html#create-user" title="13.7.1.2 CREATE USER Syntax"><code class="literal">CREATE
                USER</code></a>. Following this practice makes the
                <a class="link" href="server-administration.html#sqlmode_no_auto_create_user"><code class="literal">NO_AUTO_CREATE_USER</code></a>
                SQL mode immaterial for
                <a class="link" href="sql-syntax.html#grant" title="13.7.1.4 GRANT Syntax"><code class="literal">GRANT</code></a> statements, so it
                too is deprecated.
              </p></li><li class="listitem"><p>
                Using <a class="link" href="sql-syntax.html#grant" title="13.7.1.4 GRANT Syntax"><code class="literal">GRANT</code></a> to modify
                account properties other than privilege assignments.
                This includes authentication, SSL, and resource-limit
                properties. Instead, establish such properties at
                account-creation time with <a class="link" href="sql-syntax.html#create-user" title="13.7.1.2 CREATE USER Syntax"><code class="literal">CREATE
                USER</code></a> or modify them afterward with
                <a class="link" href="sql-syntax.html#alter-user" title="13.7.1.1 ALTER USER Syntax"><code class="literal">ALTER USER</code></a>.
              </p></li><li class="listitem"><p>
                <code class="literal">IDENTIFIED BY PASSWORD
                '<em class="replaceable"><code>hash_string</code></em>'</code>
                syntax for <a class="link" href="sql-syntax.html#create-user" title="13.7.1.2 CREATE USER Syntax"><code class="literal">CREATE USER</code></a>
                and <a class="link" href="sql-syntax.html#grant" title="13.7.1.4 GRANT Syntax"><code class="literal">GRANT</code></a>. Instead, use
                <code class="literal">IDENTIFIED WITH
                <em class="replaceable"><code>auth_plugin</code></em> AS
                '<em class="replaceable"><code>hash_string</code></em>'</code> for
                <a class="link" href="sql-syntax.html#create-user" title="13.7.1.2 CREATE USER Syntax"><code class="literal">CREATE USER</code></a> and
                <a class="link" href="sql-syntax.html#alter-user" title="13.7.1.1 ALTER USER Syntax"><code class="literal">ALTER USER</code></a>, where the
                <code class="literal">'<em class="replaceable"><code>hash_string</code></em>'</code>
                value is in a format compatible with the named plugin.
              </p></li><li class="listitem"><p>
                The <a class="link" href="functions.html#function_password"><code class="literal">PASSWORD()</code></a> function
                is deprecated and should be avoided in any context.
                Thus, <a class="link" href="sql-syntax.html#set-password" title="13.7.1.7 SET PASSWORD Syntax"><code class="literal">SET
                PASSWORD ... =
                PASSWORD('<em class="replaceable"><code>auth_string</code></em>')</code></a>
                syntax is also deprecated.
                <a class="link" href="sql-syntax.html#set-password" title="13.7.1.7 SET PASSWORD Syntax"><code class="literal">SET
                PASSWORD ... =
                '<em class="replaceable"><code>auth_string</code></em>'</code></a>
                syntax is not deprecated; nevertheless,
                <a class="link" href="sql-syntax.html#alter-user" title="13.7.1.1 ALTER USER Syntax"><code class="literal">ALTER USER</code></a> is now the
                preferred statement for assigning passwords.
              </p></li><li class="listitem"><p>
                The <a class="link" href="server-administration.html#sysvar_old_passwords"><code class="literal">old_passwords</code></a>
                system variable. Account authentication plugins can no
                longer be left unspecified in the
                <code class="literal">mysql.user</code> table, so any statement
                that assigns a password from a cleartext string can
                unambiguously determine the hashing method to use on the
                string before storing it in the
                <code class="literal">mysql.user</code> table. This renders
                <a class="link" href="server-administration.html#sysvar_old_passwords"><code class="literal">old_passwords</code></a>
                superflous.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            The query cache is deprecated. Deprecation includes these
            items:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <a class="link" href="sql-syntax.html#flush-query-cache"><code class="literal">FLUSH QUERY CACHE</code></a> and
                <a class="link" href="sql-syntax.html#reset" title="13.7.6.6 RESET Syntax"><code class="literal">RESET QUERY
                CACHE</code></a> statements.
              </p></li><li class="listitem"><p>
                The <code class="literal">SQL_CACHE</code> and
                <code class="literal">SQL_NO_CACHE</code>
                <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> modifiers.
              </p></li><li class="listitem"><p>
                These system variables:
                <a class="link" href="server-administration.html#sysvar_have_query_cache"><code class="literal">have_query_cache</code></a>,
                <a class="link" href="mysql-cluster.html#sysvar_ndb_cache_check_time"><code class="literal">ndb_cache_check_time</code></a>,
                <a class="link" href="server-administration.html#sysvar_query_cache_limit"><code class="literal">query_cache_limit</code></a>,
                <a class="link" href="server-administration.html#sysvar_query_cache_min_res_unit"><code class="literal">query_cache_min_res_unit</code></a>,
                <a class="link" href="server-administration.html#sysvar_query_cache_size"><code class="literal">query_cache_size</code></a>,
                <a class="link" href="server-administration.html#sysvar_query_cache_type"><code class="literal">query_cache_type</code></a>,
                <a class="link" href="server-administration.html#sysvar_query_cache_wlock_invalidate"><code class="literal">query_cache_wlock_invalidate</code></a>.
              </p></li><li class="listitem"><p>
                These status variables:
                <a class="link" href="server-administration.html#statvar_Qcache_free_blocks"><code class="literal">Qcache_free_blocks</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_free_memory"><code class="literal">Qcache_free_memory</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_hits"><code class="literal">Qcache_hits</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_inserts"><code class="literal">Qcache_inserts</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_lowmem_prunes"><code class="literal">Qcache_lowmem_prunes</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_not_cached"><code class="literal">Qcache_not_cached</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_queries_in_cache"><code class="literal">Qcache_queries_in_cache</code></a>,
                <a class="link" href="server-administration.html#statvar_Qcache_total_blocks"><code class="literal">Qcache_total_blocks</code></a>.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            Previously, the
            <a class="link" href="server-administration.html#option_mysqld_transaction-isolation"><code class="option">--transaction-isolation</code></a> and
            <a class="link" href="server-administration.html#option_mysqld_transaction-read-only"><code class="option">--transaction-read-only</code></a>
            server startup options corresponded to the
            <a class="link" href="server-administration.html#sysvar_tx_isolation"><code class="literal">tx_isolation</code></a> and
            <a class="link" href="server-administration.html#sysvar_tx_read_only"><code class="literal">tx_read_only</code></a> system
            variables. For better name correspondence between startup
            option and system variable names,
            <a class="link" href="server-administration.html#sysvar_transaction_isolation"><code class="literal">transaction_isolation</code></a> and
            <a class="link" href="server-administration.html#sysvar_transaction_read_only"><code class="literal">transaction_read_only</code></a> have
            been created as aliases for
            <a class="link" href="server-administration.html#sysvar_tx_isolation"><code class="literal">tx_isolation</code></a> and
            <a class="link" href="server-administration.html#sysvar_tx_read_only"><code class="literal">tx_read_only</code></a>. The
            <a class="link" href="server-administration.html#sysvar_tx_isolation"><code class="literal">tx_isolation</code></a> and
            <a class="link" href="server-administration.html#sysvar_tx_read_only"><code class="literal">tx_read_only</code></a> variables are
            now deprecated and will be removed in MySQL 8.0.
            Applications should be adjusted to use
            <a class="link" href="server-administration.html#sysvar_transaction_isolation"><code class="literal">transaction_isolation</code></a> and
            <a class="link" href="server-administration.html#sysvar_transaction_read_only"><code class="literal">transaction_read_only</code></a>
            instead.
          </p></li><li class="listitem"><p>
            The
            <a class="link" href="innodb-storage-engine.html#option_mysqld_innodb"><code class="option">--skip-innodb</code></a>
            option and its synonyms (<code class="option">--innodb=OFF</code>,
            <code class="option">--disable-innodb</code>, and so forth) are
            deprecated. These options have no effect as of MySQL 5.7.
            because <code class="literal">InnoDB</code> cannot be disabled.
          </p></li><li class="listitem"><p>
            The client-side <a class="link" href="security.html#option_general_ssl"><code class="option">--ssl</code></a> and
            <a class="link" href="security.html#option_general_ssl-verify-server-cert"><code class="option">--ssl-verify-server-cert</code></a>
            options are deprecated. Use
            <a class="link" href="security.html#option_general_ssl-mode"><code class="option">--ssl-mode=REQUIRED</code></a> instead
            of <a class="link" href="security.html#option_general_ssl"><code class="option">--ssl=1</code></a> or
            <a class="link" href="security.html#option_general_ssl"><code class="option">--enable-ssl</code></a>.
            Use <a class="link" href="security.html#option_general_ssl-mode"><code class="option">--ssl-mode=DISABLED</code></a>
            instead of <a class="link" href="security.html#option_general_ssl"><code class="option">--ssl=0</code></a>,
            <a class="link" href="security.html#option_general_ssl"><code class="option">--skip-ssl</code></a>,
            or
            <a class="link" href="security.html#option_general_ssl"><code class="option">--disable-ssl</code></a>.
            Use
            <a class="link" href="security.html#option_general_ssl-mode"><code class="option">--ssl-mode=VERIFY_IDENTITY</code></a>
            instead of
            <a class="link" href="security.html#option_general_ssl-verify-server-cert"><code class="option">--ssl-verify-server-cert</code></a>
            options. (The server-side
            <a class="link" href="security.html#option_general_ssl"><code class="option">--ssl</code></a> option is
            <span class="emphasis"><em>not</em></span> deprecated.)
          </p><p>
            For the C API, <code class="literal">MYSQL_OPT_SSL_ENFORCE</code> and
            <code class="literal">MYSQL_OPT_SSL_VERIFY_SERVER_CERT</code> options
            for <a class="link" href="connectors-apis.html#mysql-options" title="27.8.7.50 mysql_options()"><code class="literal">mysql_options()</code></a>
            correspond to the client-side
            <a class="link" href="security.html#option_general_ssl"><code class="option">--ssl</code></a> and
            <a class="link" href="security.html#option_general_ssl-verify-server-cert"><code class="option">--ssl-verify-server-cert</code></a>
            options and are deprecated. Use
            <code class="literal">MYSQL_OPT_SSL_MODE</code> with an option value
            of <code class="literal">SSL_MODE_REQUIRED</code> or
            <code class="literal">SSL_MODE_VERIFY_IDENTITY</code> instead.
          </p></li><li class="listitem"><p>
            The <a class="link" href="server-administration.html#sysvar_log_warnings"><code class="literal">log_warnings</code></a> system
            variable and <a class="link" href="server-administration.html#option_mysqld_log-warnings"><code class="option">--log-warnings</code></a>
            server option are deprecated. Use the
            <a class="link" href="server-administration.html#sysvar_log_error_verbosity"><code class="literal">log_error_verbosity</code></a> system
            variable instead.
          </p></li><li class="listitem"><p>
            The <a class="link" href="server-administration.html#option_mysqld_temp-pool"><code class="option">--temp-pool</code></a> server option
            is deprecated.
          </p></li><li class="listitem"><p>
            The
            <a class="link" href="replication.html#sysvar_binlog_max_flush_queue_time"><code class="literal">binlog_max_flush_queue_time</code></a>
            system variable does nothing in MySQL 5.7, and is deprecated
            as of MySQL 5.7.9.
          </p></li><li class="listitem"><p>
            The <a class="link" href="innodb-storage-engine.html#sysvar_innodb_support_xa"><code class="literal">innodb_support_xa</code></a>
            system variable, which enables <code class="literal">InnoDB</code>
            support for two-phase commit in XA transactions, is
            deprecated as of MySQL 5.7.10. <code class="literal">InnoDB</code>
            support for two-phase commit in XA transactions is always
            enabled as of MySQL 5.7.10.
          </p></li><li class="listitem"><p>
            The
            <a class="link" href="server-administration.html#sysvar_metadata_locks_cache_size"><code class="literal">metadata_locks_cache_size</code></a>
            and
            <a class="link" href="server-administration.html#sysvar_metadata_locks_hash_instances"><code class="literal">metadata_locks_hash_instances</code></a>
            system variables are deprecated. These do nothing as of
            MySQL 5.7.4.
          </p></li><li class="listitem"><p>
            The <a class="link" href="server-administration.html#sysvar_sync_frm"><code class="literal">sync_frm</code></a> system
            variable is deprecated.
          </p></li><li class="listitem"><p>
            The global
            <a class="link" href="server-administration.html#sysvar_character_set_database"><code class="literal">character_set_database</code></a> and
            <a class="link" href="server-administration.html#sysvar_collation_database"><code class="literal">collation_database</code></a> system
            variables are deprecated and will be removed in a future
            version of MySQL.
          </p><p>
            Assigning a value to the session
            <a class="link" href="server-administration.html#sysvar_character_set_database"><code class="literal">character_set_database</code></a> and
            <a class="link" href="server-administration.html#sysvar_collation_database"><code class="literal">collation_database</code></a> system
            variables is deprecated and assignments produce a warning.
            The session variables will become read only in a future
            version of MySQL and assignments will produce an error. It
            will remain possible to access the session variables to
            determine the database character set and collation for the
            default database.
          </p></li><li class="listitem"><p>
            The global scope for the
            <a class="link" href="replication.html#sysvar_sql_log_bin"><code class="literal">sql_log_bin</code></a> system variable
            has been deprecated, and this variable can now be set with
            session scope only. The statement
            <a class="link" href="sql-syntax.html#set-variable" title="13.7.4.1 SET Syntax for Variable Assignment"><code class="literal">SET GLOBAL
            SQL_LOG_BIN</code></a> now produces an error. It remains
            possible to read the global value of
            <code class="literal">sql_log_bin</code>, but doing so produces a
            warning. You should act now to remove from your applications
            any dependencies on reading this value; the global scope
            <code class="literal">sql_log_bin</code> is removed in MySQL
            8.0.
          </p></li><li class="listitem"><p>
            With the introduction of the data dictionary in MySQL
            8.0, the
            <a class="link" href="server-administration.html#option_mysqld_ignore-db-dir"><code class="option">--ignore-db-dir</code></a> option and
            <a class="link" href="server-administration.html#sysvar_ignore_db_dirs"><code class="literal">ignore_db_dirs</code></a> system
            variable became superfluous and were removed in that
            version. Consequently, they are deprecated in MySQL
            5.7.
          </p></li><li class="listitem"><p>
            <code class="literal">GROUP BY</code> implicitly sorts by default
            (that is, in the absence of <code class="literal">ASC</code> or
            <code class="literal">DESC</code> designators), but relying on
            implicit <code class="literal">GROUP BY</code> sorting in MySQL
            5.7 is deprecated. To achieve a specific sort
            order of grouped results, it is preferable to use To produce
            a given sort order, use explicit <code class="literal">ASC</code> or
            <code class="literal">DESC</code> designators for <code class="literal">GROUP
            BY</code> columns or provide an <code class="literal">ORDER
            BY</code> clause. <code class="literal">GROUP BY</code> sorting is
            a MySQL extension that may change in a future release; for
            example, to make it possible for the optimizer to order
            groupings in whatever manner it deems most efficient and to
            avoid the sorting overhead.
          </p></li><li class="listitem"><p>
            The <code class="literal">EXTENDED</code> and
            <code class="literal">PARTITIONS</code> keywords for the
            <a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN Syntax"><code class="literal">EXPLAIN</code></a> statement are
            deprecated. These keywords are still recognized but are now
            unnecessary because their effect is always enabled.
          </p></li><li class="listitem"><p>
            The <a class="link" href="functions.html#function_encrypt"><code class="literal">ENCRYPT()</code></a>,
            <a class="link" href="functions.html#function_encode"><code class="literal">ENCODE()</code></a>,
            <a class="link" href="functions.html#function_decode"><code class="literal">DECODE()</code></a>,
            <a class="link" href="functions.html#function_des-encrypt"><code class="literal">DES_ENCRYPT()</code></a>, and
            <a class="link" href="functions.html#function_des-decrypt"><code class="literal">DES_DECRYPT()</code></a> encryption
            functions are deprecated. For
            <a class="link" href="functions.html#function_encrypt"><code class="literal">ENCRYPT()</code></a>, consider using
            <a class="link" href="functions.html#function_sha2"><code class="literal">SHA2()</code></a> instead for one-way
            hashing. For the others, consider using
            <a class="link" href="functions.html#function_aes-encrypt"><code class="literal">AES_ENCRYPT()</code></a> and
            <a class="link" href="functions.html#function_aes-decrypt"><code class="literal">AES_DECRYPT()</code></a> instead. The
            <a class="link" href="server-administration.html#option_mysqld_des-key-file"><code class="option">--des-key-file</code></a> option, the
            <a class="link" href="server-administration.html#sysvar_have_crypt"><code class="literal">have_crypt</code></a> system variable,
            the <code class="literal">DES_KEY_FILE</code> option for the
            <a class="link" href="sql-syntax.html#flush" title="13.7.6.3 FLUSH Syntax"><code class="literal">FLUSH</code></a> statement, and the
            <code class="option">HAVE_CRYPT</code> <span class="command"><strong>CMake</strong></span> option
            also are deprecated.
          </p></li><li class="listitem"><p>
            The <a class="link" href="functions.html#function_mbrequal"><code class="literal">MBREqual()</code></a> spatial
            function is deprecated. Use
            <a class="link" href="functions.html#function_mbrequals"><code class="literal">MBREquals()</code></a> instead.
          </p></li><li class="listitem"><p>
            The functions described in
            <a class="xref" href="functions.html#gis-wkb-functions" title="12.15.4 Functions That Create Geometry Values from WKB Values">Section 12.15.4, “Functions That Create Geometry Values from WKB Values”</a> previously accepted
            either WKB strings or geometry arguments. Use of geometry
            arguments is deprecated. See that section for guidelines for
            migrating queries away from using geometry arguments.
          </p></li><li class="listitem"><p>
            The <code class="literal">INFORMATION_SCHEMA</code>
            <a class="link" href="information-schema.html#profiling-table" title="24.19 The INFORMATION_SCHEMA PROFILING Table"><code class="literal">PROFILING</code></a> table is deprecated.
            Use the Performance Schema instead; see
            <a class="xref" href="performance-schema.html" title="Chapter 25 MySQL Performance Schema">Chapter 25, <i>MySQL Performance Schema</i></a>.
          </p></li><li class="listitem"><p>
            The <code class="literal">INFORMATION_SCHEMA</code>
            <a class="link" href="information-schema.html#innodb-locks-table" title="24.32.13 The INFORMATION_SCHEMA INNODB_LOCKS Table"><code class="literal">INNODB_LOCKS</code></a> and
            <a class="link" href="information-schema.html#innodb-lock-waits-table" title="24.32.14 The INFORMATION_SCHEMA INNODB_LOCK_WAITS Table"><code class="literal">INNODB_LOCK_WAITS</code></a> tables are
            deprecated, to be removed in MySQL 8.0, which provides
            replacement Performance Schema tables.
          </p></li><li class="listitem"><p>
            The Performance Schema
            <a class="link" href="performance-schema.html#setup-timers-table" title="25.11.2.5 The setup_timers Table"><code class="literal">setup_timers</code></a> table is
            deprecated and is removed in MySQL 8.0, as is the
            <code class="literal">TICK</code> row in the
            <a class="link" href="performance-schema.html#performance-timers-table" title="25.11.16.2 The performance_timers Table"><code class="literal">performance_timers</code></a> table.
          </p></li><li class="listitem"><p>
            Treatment of <code class="literal">\N</code> as a synonym for
            <code class="literal">NULL</code> in SQL statements is deprecated and
            is removed in MySQL 8.0; use
            <code class="literal">NULL</code> instead.
          </p><p>
            This change does not affect text file import or export
            operations performed with
            <a class="link" href="sql-syntax.html#load-data" title="13.2.6 LOAD DATA INFILE Syntax"><code class="literal">LOAD DATA
            INFILE</code></a> or
            <a class="link" href="sql-syntax.html#select-into" title="13.2.9.1 SELECT ... INTO Syntax"><code class="literal">SELECT ... INTO
            OUTFILE</code></a>, for which <code class="literal">NULL</code>
            continues to be represented by <code class="literal">\N</code>. See
            <a class="xref" href="sql-syntax.html#load-data" title="13.2.6 LOAD DATA INFILE Syntax">Section 13.2.6, “LOAD DATA INFILE Syntax”</a>.
          </p></li><li class="listitem"><p>
            <code class="literal">PROCEDURE ANALYSE()</code> syntax is deprecated.
          </p></li><li class="listitem"><p>
            Comment stripping by the <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> client and
            the options to control it
            (<a class="link" href="programs.html#option_mysql_comments"><code class="option">--skip-comments</code></a>,
            <a class="link" href="programs.html#option_mysql_comments"><code class="option">--comments</code></a>) are deprecated.
          </p></li><li class="listitem"><p>
            <a class="link" href="programs.html#mysqld-safe" title="4.3.2 mysqld_safe — MySQL Server Startup Script"><span class="command"><strong>mysqld_safe</strong></span></a> support for
            <code class="literal">syslog</code> output is deprecated. Use the
            native server <code class="literal">syslog</code> support used
            instead. See <a class="xref" href="server-administration.html#error-log" title="5.4.2 The Error Log">Section 5.4.2, “The Error Log”</a>.
          </p></li><li class="listitem"><p>
            Conversion of pre-MySQL 5.1 database names containing
            special characters to 5.1 format with the addition of a
            <code class="literal">#mysql50#</code> prefix is deprecated. Because
            of this, the
            <a class="link" href="programs.html#option_mysqlcheck_fix-db-names"><code class="option">--fix-db-names</code></a> and
            <a class="link" href="programs.html#option_mysqlcheck_fix-table-names"><code class="option">--fix-table-names</code></a> options
            for <a class="link" href="programs.html#mysqlcheck" title="4.5.3 mysqlcheck — A Table Maintenance Program"><span class="command"><strong>mysqlcheck</strong></span></a> and the <code class="literal">UPGRADE
            DATA DIRECTORY NAME</code> clause for the
            <a class="link" href="sql-syntax.html#alter-database" title="13.1.1 ALTER DATABASE Syntax"><code class="literal">ALTER DATABASE</code></a> statement are
            also deprecated.
          </p><p>
            Upgrades are supported only from one release series to
            another (for example, 5.0 to 5.1, or 5.1 to 5.5), so there
            should be little remaining need for conversion of older 5.0
            database names to current versions of MySQL. As a
            workaround, upgrade a MySQL 5.0 installation to MySQL 5.1
            before upgrading to a more recent release.
          </p></li><li class="listitem"><p>
            <a class="link" href="programs.html#mysql-install-db" title="4.4.2 mysql_install_db — Initialize MySQL Data Directory"><span class="command"><strong>mysql_install_db</strong></span></a> functionality has been
            integrated into the MySQL server, <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a>.
            To use this capability to initialize a MySQL installation,
            if you previously invoked
            <a class="link" href="programs.html#mysql-install-db" title="4.4.2 mysql_install_db — Initialize MySQL Data Directory"><span class="command"><strong>mysql_install_db</strong></span></a> manually, invoke
            <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> with the
            <a class="link" href="server-administration.html#option_mysqld_initialize"><code class="option">--initialize</code></a> or
            <a class="link" href="server-administration.html#option_mysqld_initialize-insecure"><code class="option">--initialize-insecure</code></a> option,
            depending on whether you want the server to generate a
            random password for the initial
            <code class="literal">'root'@'localhost'</code> account.
          </p><p>
            <a class="link" href="programs.html#mysql-install-db" title="4.4.2 mysql_install_db — Initialize MySQL Data Directory"><span class="command"><strong>mysql_install_db</strong></span></a> is now deprecated, as is
            the special <a class="link" href="server-administration.html#option_mysqld_bootstrap"><code class="option">--bootstrap</code></a>
            option that <a class="link" href="programs.html#mysql-install-db" title="4.4.2 mysql_install_db — Initialize MySQL Data Directory"><span class="command"><strong>mysql_install_db</strong></span></a> passes to
            <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a>.
          </p></li><li class="listitem"><p>
            The <a class="link" href="programs.html#mysql-plugin" title="4.4.3 mysql_plugin — Configure MySQL Server Plugins"><span class="command"><strong>mysql_plugin</strong></span></a> utility is deprecated.
            Alternatives include loading plugins at server startup using
            the <a class="link" href="server-administration.html#option_mysqld_plugin-load"><code class="option">--plugin-load</code></a> or
            <a class="link" href="server-administration.html#option_mysqld_plugin-load-add"><code class="option">--plugin-load-add</code></a> option, or
            at runtime using the <a class="link" href="sql-syntax.html#install-plugin" title="13.7.3.3 INSTALL PLUGIN Syntax"><code class="literal">INSTALL
            PLUGIN</code></a> statement.
          </p></li><li class="listitem"><p>
            The <a class="link" href="connectors-apis.html#mysql-kill" title="27.8.7.39 mysql_kill()"><code class="literal">mysql_kill()</code></a>,
            <a class="link" href="connectors-apis.html#mysql-list-fields" title="27.8.7.43 mysql_list_fields()"><code class="literal">mysql_list_fields()</code></a>,
            <a class="link" href="connectors-apis.html#mysql-list-processes" title="27.8.7.44 mysql_list_processes()"><code class="literal">mysql_list_processes()</code></a>, and
            <a class="link" href="connectors-apis.html#mysql-refresh" title="27.8.7.58 mysql_refresh()"><code class="literal">mysql_refresh()</code></a> C API
            functions are deprecated. The same is true of the
            corresponding <code class="literal">COM_PROCESS_KILL</code>,
            <code class="literal">COM_FIELD_LIST</code>,
            <code class="literal">COM_PROCESS_INFO</code>, and
            <code class="literal">COM_REFRESH</code> client/server protocol
            commands. Instead, use
            <a class="link" href="connectors-apis.html#mysql-query" title="27.8.7.53 mysql_query()"><code class="literal">mysql_query()</code></a> to execute a
            <a class="link" href="sql-syntax.html#kill" title="13.7.6.4 KILL Syntax"><code class="literal">KILL</code></a>,
            <a class="link" href="sql-syntax.html#show-columns" title="13.7.5.5 SHOW COLUMNS Syntax"><code class="literal">SHOW COLUMNS</code></a>,
            <a class="link" href="sql-syntax.html#show-processlist" title="13.7.5.29 SHOW PROCESSLIST Syntax"><code class="literal">SHOW PROCESSLIST</code></a>, or
            <a class="link" href="sql-syntax.html#flush" title="13.7.6.3 FLUSH Syntax"><code class="literal">FLUSH</code></a> statement,
            respectively.
          </p></li><li class="listitem"><p>
            The <code class="literal">mysql_shutdown()</code> C API function is
            deprecated. Instead, use
            <a class="link" href="connectors-apis.html#mysql-query" title="27.8.7.53 mysql_query()"><code class="literal">mysql_query()</code></a> to execute a
            <a class="link" href="sql-syntax.html#shutdown" title="13.7.6.7 SHUTDOWN Syntax"><code class="literal">SHUTDOWN</code></a> statement.
          </p></li><li class="listitem"><p>
            The <code class="literal">libmysqld</code> embedded server library is
            deprecated as of MySQL 5.7.19. These are also deprecated:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <a class="link" href="programs.html#mysql-config" title="4.7.1 mysql_config — Display Options for Compiling Clients"><span class="command"><strong>mysql_config</strong></span></a>
                <a class="link" href="programs.html#option_mysql_config_libmysqld-libs"><code class="option">--libmysqld-libs</code></a>,
                <a class="link" href="programs.html#option_mysql_config_libmysqld-libs"><code class="option">--embedded-libs</code></a>,
                and
                <a class="link" href="programs.html#option_mysql_config_libmysqld-libs"><code class="option">--embedded</code></a>
                options
              </p></li><li class="listitem"><p>
                The <span class="command"><strong>CMake</strong></span>
                <a class="link" href="installing.html#option_cmake_with_embedded_server"><code class="option">WITH_EMBEDDED_SERVER</code></a>,
                <a class="link" href="installing.html#option_cmake_with_embedded_shared_library"><code class="option">WITH_EMBEDDED_SHARED_LIBRARY</code></a>,
                and
                <a class="link" href="installing.html#option_cmake_install_secure_file_priv_embeddeddir"><code class="option">INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR</code></a>
                options
              </p></li><li class="listitem"><p>
                The (undocumented) <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a>
                <code class="option">--server-arg</code> option
              </p></li><li class="listitem"><p>
                The <span class="command"><strong>mysqltest</strong></span>
                <code class="option">--embedded-server</code>,
                <code class="option">--server-arg</code>, and
                <code class="option">--server-file</code> options
              </p></li><li class="listitem"><p>
                The <span class="command"><strong>mysqltest_embedded</strong></span> and
                <span class="command"><strong>mysql_client_test_embedded</strong></span> test
                programs
</p></li></ul>
</div>
<p>
            Because <code class="literal">libmysqld</code> uses an API comparable
            to that of <code class="literal">libmysqlclient</code>, the migration
            path away from <code class="literal">libmysqld</code> is
            straightforward:
</p>
<div class="orderedlist">
<ol class="orderedlist" type="1"><li class="listitem"><p>
                Bring up a standalone MySQL server
                (<a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a>).
              </p></li><li class="listitem"><p>
                Modify application code to remove API calls that are
                specific to <code class="literal">libmysqld</code>.
              </p></li><li class="listitem"><p>
                Modify application code to connect to the standalone
                MySQL server.
              </p></li><li class="listitem"><p>
                Modify build scripts to use
                <code class="literal">libmysqlclient</code> rather than
                <code class="literal">libmysqld</code>. For example, if you use
                <a class="link" href="programs.html#mysql-config" title="4.7.1 mysql_config — Display Options for Compiling Clients"><span class="command"><strong>mysql_config</strong></span></a>, invoke it with the
                <a class="link" href="programs.html#option_mysql_config_libs"><code class="option">--libs</code></a> option
                rather than
                <a class="link" href="programs.html#option_mysql_config_libmysqld-libs"><code class="option">--libmysqld-libs</code></a>.
</p></li></ol>
</div>
</li><li class="listitem"><p>
            The <a class="link" href="programs.html#replace-utility" title="4.8.3 replace — A String-Replacement Utility"><span class="command"><strong>replace</strong></span></a> utility is deprecated.
          </p></li><li class="listitem"><p>
            Support for DTrace is deprecated.
          </p></li><li class="listitem"><p>
            The <a class="link" href="functions.html#function_json-merge"><code class="literal">JSON_MERGE()</code></a> function is
            deprecated as of MySQL 5.7.22. Use
            <a class="link" href="functions.html#function_json-merge-preserve"><code class="literal">JSON_MERGE_PRESERVE()</code></a>
            instead.
          </p></li><li class="listitem"><p>
            Support for placing table partitions in shared
            <code class="literal">InnoDB</code> tablespaces is deprecated as of
            MySQL 5.7.24. Shared tablespaces include the
            <code class="literal">InnoDB</code> system tablespace and general
            tablespaces.
</p></li></ul>
</div>

</div>
<div class="simplesect">
<div class="titlepage">
<div>
<div class="simple">
<h3 class="title"><a name="mysql-nutshell-removals"></a>Features Removed in MySQL 5.7</h3>

</div>

</div>

</div>
<p>
        The following items are obsolete and have been removed in MySQL
        5.7. Where alternatives are shown, applications
        should be updated to use them.
      </p><p>
        For MySQL 5.6 applications that use features
        removed in MySQL 5.7, statements may fail when
        replicated from a MySQL 5.6 master to a MySQL
        5.7 slave, or may have different effects on master
        and slave. To avoid such problems, applications that use
        features removed in MySQL 5.7 should be revised to
        avoid them and use alternatives when possible.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Support for passwords that use the older pre-4.1 password
            hashing format is removed, which involves the following
            changes. Applications that use any feature no longer
            supported must be modified.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <code class="literal">mysql_old_password</code> authentication
                plugin is removed. Accounts that use this plugin are
                disabled at startup and the server writes an
                <span class="quote">“<span class="quote">unknown plugin</span>”</span> message to the error log.
                For instructions on upgrading accounts that use this
                plugin, see <a class="xref" href="security.html#account-upgrades" title="6.5.1.3 Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin">Section 6.5.1.3, “Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password
        Plugin”</a>.
              </p></li><li class="listitem"><p>
                The <code class="option">--secure-auth</code> option to the server
                and client programs is the default, but is now a no-op.
                It is deprecated and will be removed in a future MySQL
                release.
              </p></li><li class="listitem"><p>
                The <code class="option">--skip-secure-auth</code> option to the
                server and client programs is no longer supported and
                using it produces an error.
              </p></li><li class="listitem"><p>
                The <a class="link" href="server-administration.html#sysvar_secure_auth"><code class="literal">secure_auth</code></a> system
                variable permits only a value of 1; a value of 0 is no
                longer permitted.
              </p></li><li class="listitem"><p>
                For the <a class="link" href="server-administration.html#sysvar_old_passwords"><code class="literal">old_passwords</code></a>
                system variable, a value of 1 (produce pre-4.1 hashes)
                is no longer permitted.
              </p></li><li class="listitem"><p>
                The <a class="link" href="functions.html#function_old-password"><code class="literal">OLD_PASSWORD()</code></a>
                function is removed.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            In MySQL 5.6.6, the <a class="link" href="data-types.html#year" title="11.3.3 The YEAR Type"><code class="literal">YEAR(2)</code></a>
            data type was deprecated. Support for
            <a class="link" href="data-types.html#year" title="11.3.3 The YEAR Type"><code class="literal">YEAR(2)</code></a> is now removed. Once
            you upgrade to MySQL 5.7.5 or higher, any remaining
            <a class="link" href="data-types.html#year" title="11.3.3 The YEAR Type"><code class="literal">YEAR(2)</code></a> columns must be
            converted to <a class="link" href="data-types.html#year" title="11.3.3 The YEAR Type"><code class="literal">YEAR(4)</code></a> to
            become usable again. For conversion strategies, see
            <a class="xref" href="data-types.html#migrating-to-year4" title="11.3.4 YEAR(2) Limitations and Migrating to YEAR(4)">Section 11.3.4, “YEAR(2) Limitations and Migrating to YEAR(4)”</a>. For example, run
            <a class="link" href="programs.html#mysql-upgrade" title="4.4.7 mysql_upgrade — Check and Upgrade MySQL Tables"><span class="command"><strong>mysql_upgrade</strong></span></a> after upgrading.
          </p></li><li class="listitem"><p>
            The <code class="literal">innodb_mirrored_log_groups</code> system
            variable. The only supported value was 1, so it had no
            purpose.
          </p></li><li class="listitem"><p>
            The <a class="link" href="server-administration.html#sysvar_storage_engine"><code class="literal">storage_engine</code></a> system
            variable. Use
            <a class="link" href="server-administration.html#sysvar_default_storage_engine"><code class="literal">default_storage_engine</code></a>
            instead.
          </p></li><li class="listitem"><p>
            The <code class="literal">thread_concurrency</code> system variable.
          </p></li><li class="listitem"><p>
            The <a class="link" href="server-administration.html#sysvar_timed_mutexes"><code class="literal">timed_mutexes</code></a> system
            variable. It does nothing and has no effect.
          </p></li><li class="listitem"><p>
            The <code class="literal">IGNORE</code> clause for
            <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a>.
          </p></li><li class="listitem"><p>
            <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT
            DELAYED</code></a> is no longer supported. The server
            recognizes but ignores the <code class="literal">DELAYED</code>
            keyword, handles the insert as a nondelayed insert, and
            generates an
            <code class="literal">ER_WARN_LEGACY_SYNTAX_CONVERTED</code> warning.
            (<span class="quote">“<span class="quote">INSERT DELAYED is no longer supported. The statement
            was converted to INSERT.</span>”</span>) Similarly,
            <a class="link" href="sql-syntax.html#replace" title="13.2.8 REPLACE Syntax"><code class="literal">REPLACE
            DELAYED</code></a> is handled as a nondelayed replace. The
            <code class="literal">DELAYED</code> keyword will be removed in a
            future release.
          </p><p>
            In addition, several <code class="literal">DELAYED</code>-related
            options or features were removed:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <code class="literal">--delayed-insert</code> option for
                <a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump — A Database Backup Program"><span class="command"><strong>mysqldump</strong></span></a>.
              </p></li><li class="listitem"><p>
                The <code class="literal">COUNT_WRITE_DELAYED</code>,
                <code class="literal">SUM_TIMER_WRITE_DELAYED</code>,
                <code class="literal">MIN_TIMER_WRITE_DELAYED</code>,
                <code class="literal">AVG_TIMER_WRITE_DELAYED</code>, and
                <code class="literal">MAX_TIMER_WRITE_DELAYED</code> columns of
                the Performance Schema
                <a class="link" href="performance-schema.html#table-lock-waits-summary-by-table-table" title="25.11.15.7.3 The table_lock_waits_summary_by_table Table"><code class="literal">table_lock_waits_summary_by_table</code></a>
                table.
              </p></li><li class="listitem"><p>
                <a class="link" href="programs.html#mysqlbinlog" title="4.6.7 mysqlbinlog — Utility for Processing Binary Log Files"><span class="command"><strong>mysqlbinlog</strong></span></a> no longer writes comments
                mentioning <code class="literal">INSERT DELAYED</code>.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            Database symlinking on Windows using for
            <code class="filename">.sym</code> files has been removed because it
            is redundant with native symlink support available using
            <span class="command"><strong>mklink</strong></span>. Any <code class="filename">.sym</code>
            file symbolic links will be ignored and should be replaced
            with symlinks created using <span class="command"><strong>mklink</strong></span>. See
            <a class="xref" href="optimization.html#windows-symbolic-links" title="8.12.3.3 Using Symbolic Links for Databases on Windows">Section 8.12.3.3, “Using Symbolic Links for Databases on Windows”</a>.
          </p></li><li class="listitem"><p>
            The unused <code class="option">--basedir</code>,
            <code class="option">--datadir</code>, and <code class="option">--tmpdir</code>
            options for <a class="link" href="programs.html#mysql-upgrade" title="4.4.7 mysql_upgrade — Check and Upgrade MySQL Tables"><span class="command"><strong>mysql_upgrade</strong></span></a> were removed.
          </p></li><li class="listitem"><p>
            Previously, program options could be specified in full or as
            any unambiguous prefix. For example, the
            <a class="link" href="programs.html#option_mysqldump_compress"><code class="option">--compress</code></a> option could be
            given to <a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump — A Database Backup Program"><span class="command"><strong>mysqldump</strong></span></a> as
            <code class="option">--compr</code>, but not as <code class="option">--comp</code>
            because the latter is ambiguous. Option prefixes are no
            longer supported; only full options are accepted. This is
            because prefixes can cause problems when new options are
            implemented for programs and a prefix that is currently
            unambiguous might become ambiguous in the future. Some
            implications of this change:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <code class="option">--key-buffer</code> option must now be
                specified as <code class="option">--key-buffer-size</code>.
              </p></li><li class="listitem"><p>
                The <code class="option">--skip-grant</code> option must now be
                specified as <code class="option">--skip-grant-tables</code>.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            <a class="link" href="sql-syntax.html#show-engine" title="13.7.5.15 SHOW ENGINE Syntax"><code class="literal">SHOW ENGINE
            INNODB MUTEX</code></a> output is removed. Comparable
            information can be generated by creating views on
            <a class="link" href="performance-schema.html" title="Chapter 25 MySQL Performance Schema">Performance Schema</a>
            tables.
          </p></li><li class="listitem"><p>
            The <code class="literal">InnoDB</code> Tablespace Monitor and
            <code class="literal">InnoDB</code> Table Monitor are removed. For the
            Table Monitor, equivalent information can be obtained from
            <code class="literal">InnoDB</code>
            <code class="literal">INFORMATION_SCHEMA</code> tables.
          </p></li><li class="listitem"><p>
            The specially named tables used to enable and disable the
            standard <code class="literal">InnoDB</code> Monitor and
            <code class="literal">InnoDB</code> Lock Monitor
            (<code class="literal">innodb_monitor</code> and
            <code class="literal">innodb_lock_monitor</code>) are removed and
            replaced by two dynamic system variables:
            <a class="link" href="innodb-storage-engine.html#sysvar_innodb_status_output"><code class="literal">innodb_status_output</code></a> and
            <a class="link" href="innodb-storage-engine.html#sysvar_innodb_status_output_locks"><code class="literal">innodb_status_output_locks</code></a>.
            For additional information, see
            <a class="xref" href="innodb-storage-engine.html#innodb-monitors" title="14.17 InnoDB Monitors">Section 14.17, “InnoDB Monitors”</a>.
          </p></li><li class="listitem"><p>
            The <a class="link" href="innodb-storage-engine.html#sysvar_innodb_use_sys_malloc"><code class="literal">innodb_use_sys_malloc</code></a>
            and
            <a class="link" href="innodb-storage-engine.html#sysvar_innodb_additional_mem_pool_size"><code class="literal">innodb_additional_mem_pool_size</code></a>
            system variables, which were deprecated in MySQL 5.6.3, were
            removed.
          </p></li><li class="listitem"><p>
            The <span class="command"><strong>msql2mysql</strong></span>,
            <span class="command"><strong>mysql_convert_table_format</strong></span>,
            <span class="command"><strong>mysql_find_rows</strong></span>,
            <span class="command"><strong>mysql_fix_extensions</strong></span>,
            <span class="command"><strong>mysql_setpermission</strong></span>,
            <span class="command"><strong>mysql_waitpid</strong></span>,
            <span class="command"><strong>mysql_zap</strong></span>,
            <span class="command"><strong>mysqlaccess</strong></span>, and
            <span class="command"><strong>mysqlbug</strong></span> utilities.
          </p></li><li class="listitem"><p>
            The <span class="command"><strong>mysqlhotcopy</strong></span> utility. Alternatives
            include <a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump — A Database Backup Program"><span class="command"><strong>mysqldump</strong></span></a> and MySQL Enterprise
            Backup.
          </p></li><li class="listitem"><p>
            The <span class="command"><strong>binary-configure.sh</strong></span> script.
          </p></li><li class="listitem"><p>
            The
            <a class="link" href="installing.html#option_cmake_innodb_page_atomic_ref_count"><code class="option">INNODB_PAGE_ATOMIC_REF_COUNT</code></a>
            <span class="command"><strong>CMake</strong></span> option is removed.
          </p></li><li class="listitem"><p>
            The <code class="literal">innodb_create_intrinsic</code> option is
            removed.
          </p></li><li class="listitem"><p>
            The
            <a class="link" href="innodb-storage-engine.html#sysvar_innodb_optimize_point_storage"><code class="literal">innodb_optimize_point_storage</code></a>
            option and related internal data types
            (<code class="literal">DATA_POINT</code> and
            <code class="literal">DATA_VAR_POINT</code>) were removed.
          </p></li><li class="listitem"><p>
            The
            <a class="link" href="innodb-storage-engine.html#sysvar_innodb_log_checksum_algorithm"><code class="literal">innodb_log_checksum_algorithm</code></a>
            option is removed.
</p></li></ul>
</div>

</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="added-deprecated-removed"></a>1.5 Server and Status Variables and Options Added, Deprecated, or Removed in
MySQL 5.7</h2>
</div>
</div>
</div>
<p>
    This section lists server variables, status variables, and options
    that were added for the first time, have been deprecated, or have
    been removed in MySQL 5.7.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        <a class="xref" href="introduction.html#optvars-added" title="Options and Variables Introduced in MySQL 5.7">Options and Variables Introduced in MySQL 5.7</a>
      </p></li><li class="listitem"><p>
        <a class="xref" href="introduction.html#optvars-deprecated" title="Options and Variables Deprecated in MySQL 5.7">Options and Variables Deprecated in MySQL 5.7</a>
      </p></li><li class="listitem"><p>
        <a class="xref" href="introduction.html#optvars-removed" title="Options and Variables Removed in MySQL 5.7">Options and Variables Removed in MySQL 5.7</a>
</p></li></ul>
</div>
<div class="simplesect">
<div class="titlepage">
<div>
<div class="simple">
<h3 class="title"><a name="optvars-added"></a>Options and Variables Introduced in MySQL 5.7</h3>

</div>

</div>

</div>
<p>
      The following system variables, status variables, and options are
      new in MySQL 5.7, and have not been included in any previous
      release series.
</p>
<div class="itemizedlist">
<a name="optvars-added-list"></a><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_current_size">Audit_log_current_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_event_max_drop_size">Audit_log_event_max_drop_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_events">Audit_log_events</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_events_filtered">Audit_log_events_filtered</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_events_lost">Audit_log_events_lost</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_events_written">Audit_log_events_written</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_total_size">Audit_log_total_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Audit_log_write_waits">Audit_log_write_waits</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_change_repl_filter</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_explain_other</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_group_replication_start</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_group_replication_stop</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_show_create_user</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_show_slave_status_nonblocking</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_show_slave_status_nonblocking</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Com_xxx">Com_signal</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Connection_control_delay_generated">Connection_control_delay_generated</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Firewall_access_denied">Firewall_access_denied</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Firewall_access_granted">Firewall_access_granted</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_Firewall_cached_entries">Firewall_cached_entries</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Innodb_buffer_pool_resize_status">Innodb_buffer_pool_resize_status</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Locked_connects">Locked_connects</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_execution_time_exceeded">Max_execution_time_exceeded</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_execution_time_set">Max_execution_time_set</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_execution_time_set_failed">Max_execution_time_set_failed</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_statement_time_exceeded">Max_statement_time_exceeded</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_statement_time_set">Max_statement_time_set</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_statement_time_set_failed">Max_statement_time_set_failed</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_used_connections_time">Max_used_connections_time</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_index_stat_lost">Performance_schema_index_stat_lost</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_memory_classes_lost">Performance_schema_memory_classes_lost</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_metadata_lock_lost">Performance_schema_metadata_lock_lost</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_nested_statement_lost">Performance_schema_nested_statement_lost</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_prepared_statements_lost">Performance_schema_prepared_statements_lost</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_program_lost">Performance_schema_program_lost</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#statvar_Performance_schema_table_lock_stat_lost">Performance_schema_table_lock_stat_lost</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Rewriter_number_loaded_rules">Rewriter_number_loaded_rules</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Rewriter_number_reloads">Rewriter_number_reloads</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Rewriter_number_rewritten_queries">Rewriter_number_rewritten_queries</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Rewriter_reload_error">Rewriter_reload_error</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_audit-log">audit-log</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_buffer_size">audit_log_buffer_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_compression">audit_log_compression</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_connection_policy">audit_log_connection_policy</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_current_session">audit_log_current_session</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_encryption">audit_log_encryption</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_exclude_accounts">audit_log_exclude_accounts</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_file">audit_log_file</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_filter_id">audit_log_filter_id</a></code>:
          Added in MySQL 5.7.13.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_flush">audit_log_flush</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_format">audit_log_format</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_include_accounts">audit_log_include_accounts</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_policy">audit_log_policy</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_read_buffer_size">audit_log_read_buffer_size</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_rotate_on_size">audit_log_rotate_on_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_statement_policy">audit_log_statement_policy</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_audit_log_strategy">audit_log_strategy</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_auth_method_name">authentication_ldap_sasl_auth_method_name</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_bind_base_dn">authentication_ldap_sasl_bind_base_dn</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_bind_root_dn">authentication_ldap_sasl_bind_root_dn</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_bind_root_pwd">authentication_ldap_sasl_bind_root_pwd</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_ca_path">authentication_ldap_sasl_ca_path</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_group_search_attr">authentication_ldap_sasl_group_search_attr</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_group_search_filter">authentication_ldap_sasl_group_search_filter</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_init_pool_size">authentication_ldap_sasl_init_pool_size</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_log_status">authentication_ldap_sasl_log_status</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_max_pool_size">authentication_ldap_sasl_max_pool_size</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_server_host">authentication_ldap_sasl_server_host</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_server_port">authentication_ldap_sasl_server_port</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_tls">authentication_ldap_sasl_tls</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_sasl_user_search_attr">authentication_ldap_sasl_user_search_attr</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_auth_method_name">authentication_ldap_simple_auth_method_name</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_bind_base_dn">authentication_ldap_simple_bind_base_dn</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_bind_root_dn">authentication_ldap_simple_bind_root_dn</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_bind_root_pwd">authentication_ldap_simple_bind_root_pwd</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_ca_path">authentication_ldap_simple_ca_path</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_group_search_attr">authentication_ldap_simple_group_search_attr</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_group_search_filter">authentication_ldap_simple_group_search_filter</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_init_pool_size">authentication_ldap_simple_init_pool_size</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_log_status">authentication_ldap_simple_log_status</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_max_pool_size">authentication_ldap_simple_max_pool_size</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_server_host">authentication_ldap_simple_server_host</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_server_port">authentication_ldap_simple_server_port</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_tls">authentication_ldap_simple_tls</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_authentication_ldap_simple_user_search_attr">authentication_ldap_simple_user_search_attr</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_authentication_windows_log_level">authentication_windows_log_level</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_authentication_windows_use_principal_name">authentication_windows_use_principal_name</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_auto_generate_certs">auto_generate_certs</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_avoid_temporal_upgrade">avoid_temporal_upgrade</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_error_action">binlog_error_action</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_group_commit_sync_delay">binlog_group_commit_sync_delay</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_group_commit_sync_no_delay_count">binlog_group_commit_sync_no_delay_count</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_gtid_simple_recovery">binlog_gtid_simple_recovery</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_transaction_dependency_history_size">binlog_transaction_dependency_history_size</a></code>:
          Added in MySQL 5.7.22.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_transaction_dependency_tracking">binlog_transaction_dependency_tracking</a></code>:
          Added in MySQL 5.7.22.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlogging_impossible_mode">binlogging_impossible_mode</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_block_encryption_mode">block_encryption_mode</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_check_proxy_users">check_proxy_users</a></code>:
          Added in MySQL 5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_connection_control_failed_connections_threshold">connection_control_failed_connections_threshold</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_connection_control_max_connection_delay">connection_control_max_connection_delay</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_connection_control_min_connection_delay">connection_control_min_connection_delay</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_daemonize">daemonize</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_default_authentication_plugin">default_authentication_plugin</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_default_password_lifetime">default_password_lifetime</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_disable-partition-engine-check">disable-partition-engine-check</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_disabled_storage_engines">disabled_storage_engines</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_disconnect_on_expired_password">disconnect_on_expired_password</a></code>:
          Added in MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_early-plugin-load">early-plugin-load</a></code>:
          Added in MySQL 5.7.11.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#option_mysqld_executed-gtids-compression-period">executed-gtids-compression-period</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_executed_gtids_compression_period">executed_gtids_compression_period</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_allow_local_disjoint_gtids_join">group_replication_allow_local_disjoint_gtids_join</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_allow_local_lower_version_join">group_replication_allow_local_lower_version_join</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_auto_increment_increment">group_replication_auto_increment_increment</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_bootstrap_group">group_replication_bootstrap_group</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_components_stop_timeout">group_replication_components_stop_timeout</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_compression_threshold">group_replication_compression_threshold</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_enforce_update_everywhere_checks">group_replication_enforce_update_everywhere_checks</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="ulink" href="http://dev.mysql.com/doc/refman/8.0/en/group-replication-options.html#sysvar_group_replication_exit_state_action" target="_top">group_replication_exit_state_action</a></code>:
          Added in MySQL 5.7.23.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_flow_control_applier_threshold">group_replication_flow_control_applier_threshold</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_flow_control_certifier_threshold">group_replication_flow_control_certifier_threshold</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_flow_control_mode">group_replication_flow_control_mode</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_force_members">group_replication_force_members</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_group_name">group_replication_group_name</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_group_seeds">group_replication_group_seeds</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_gtid_assignment_block_size">group_replication_gtid_assignment_block_size</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_ip_whitelist">group_replication_ip_whitelist</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_local_address">group_replication_local_address</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_member_weight">group_replication_member_weight</a></code>:
          Added in MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_poll_spin_loops">group_replication_poll_spin_loops</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_complete_at">group_replication_recovery_complete_at</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_reconnect_interval">group_replication_recovery_reconnect_interval</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_retry_count">group_replication_recovery_retry_count</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_ca">group_replication_recovery_ssl_ca</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_capath">group_replication_recovery_ssl_capath</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_cert">group_replication_recovery_ssl_cert</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_cipher">group_replication_recovery_ssl_cipher</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_crl">group_replication_recovery_ssl_crl</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_crlpath">group_replication_recovery_ssl_crlpath</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_key">group_replication_recovery_ssl_key</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_ssl_verify_server_cert">group_replication_recovery_ssl_verify_server_cert</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_recovery_use_ssl">group_replication_recovery_use_ssl</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_single_primary_mode">group_replication_single_primary_mode</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_ssl_mode">group_replication_ssl_mode</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_start_on_boot">group_replication_start_on_boot</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_transaction_size_limit">group_replication_transaction_size_limit</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_unreachable_majority_timeout">group_replication_unreachable_majority_timeout</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#option_mysqld_gtid-executed-compression-period">gtid-executed-compression-period</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_gtid_executed_compression_period">gtid_executed_compression_period</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_have_statement_timeout">have_statement_timeout</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_initialize">initialize</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_initialize-insecure">initialize-insecure</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_adaptive_hash_index_parts">innodb_adaptive_hash_index_parts</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_background_drop_list_empty">innodb_background_drop_list_empty</a></code>:
          Added in MySQL 5.7.10.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_buffer_pool_chunk_size">innodb_buffer_pool_chunk_size</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_buffer_pool_dump_pct">innodb_buffer_pool_dump_pct</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_compress_debug">innodb_compress_debug</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_deadlock_detect">innodb_deadlock_detect</a></code>:
          Added in MySQL 5.7.15.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_default_row_format">innodb_default_row_format</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_disable_resize_buffer_pool_debug">innodb_disable_resize_buffer_pool_debug</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_fill_factor">innodb_fill_factor</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_flush_sync">innodb_flush_sync</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_ft_result_cache_limit">innodb_ft_result_cache_limit</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_ft_total_cache_size">innodb_ft_total_cache_size</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_log_checksum_algorithm">innodb_log_checksum_algorithm</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_log_checksums">innodb_log_checksums</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_log_write_ahead_size">innodb_log_write_ahead_size</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_max_undo_log_size">innodb_max_undo_log_size</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_merge_threshold_set_all_debug">innodb_merge_threshold_set_all_debug</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_numa_interleave">innodb_numa_interleave</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_optimize_point_storage">innodb_optimize_point_storage</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_page_cleaners">innodb_page_cleaners</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_purge_rseg_truncate_frequency">innodb_purge_rseg_truncate_frequency</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_stats_include_delete_marked">innodb_stats_include_delete_marked</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_status_output">innodb_status_output</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_status_output_locks">innodb_status_output_locks</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_sync_debug">innodb_sync_debug</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_temp_data_file_path">innodb_temp_data_file_path</a></code>:
          Added in MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_tmpdir">innodb_tmpdir</a></code>:
          Added in MySQL 5.7.11.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_undo_log_truncate">innodb_undo_log_truncate</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_internal_tmp_disk_storage_engine">internal_tmp_disk_storage_engine</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-destination">keyring-migration-destination</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-host">keyring-migration-host</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-password">keyring-migration-password</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-port">keyring-migration-port</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-socket">keyring-migration-socket</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-source">keyring-migration-source</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#option_mysqld_keyring-migration-user">keyring-migration-user</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_aws_cmk_id">keyring_aws_cmk_id</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_aws_conf_file">keyring_aws_conf_file</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_aws_data_file">keyring_aws_data_file</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_aws_region">keyring_aws_region</a></code>:
          Added in MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_encrypted_file_data">keyring_encrypted_file_data</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_encrypted_file_password">keyring_encrypted_file_password</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_file_data">keyring_file_data</a></code>:
          Added in MySQL 5.7.11.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_okv_conf_dir">keyring_okv_conf_dir</a></code>:
          Added in MySQL 5.7.12.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_keyring_operations">keyring_operations</a></code>:
          Added in MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_log_backward_compatible_user_definitions">log_backward_compatible_user_definitions</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_log_builtin_as_identified_by_password">log_builtin_as_identified_by_password</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_error_verbosity">log_error_verbosity</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_slow_admin_statements">log_slow_admin_statements</a></code>:
          Added in MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_log_slow_slave_statements">log_slow_slave_statements</a></code>:
          Added in MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_log_statements_unsafe_for_binlog">log_statements_unsafe_for_binlog</a></code>:
          Added in MySQL 5.7.11.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_syslog">log_syslog</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_syslog_facility">log_syslog_facility</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_syslog_include_pid">log_syslog_include_pid</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_syslog_tag">log_syslog_tag</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_log_timestamps">log_timestamps</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_max_digest_length">max_digest_length</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_max_execution_time">max_execution_time</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_max_points_in_geometry">max_points_in_geometry</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_max_statement_time">max_statement_time</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_mecab_charset">mecab_charset</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_mecab_rc_file">mecab_rc_file</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_mysql_firewall_mode">mysql_firewall_mode</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_mysql_firewall_trace">mysql_firewall_trace</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_mysql_native_password_proxy_users">mysql_native_password_proxy_users</a></code>:
          Added in MySQL 5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#option_mysqld_mysqlx-bind-address">mysqlx-bind-address</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#option_mysqld_mysqlx-min-worker-threads">mysqlx-min-worker-threads</a></code>:
          Added in MySQL 5.7.12.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#option_mysqld_mysqlx-port-open-timeout">mysqlx-port-open-timeout</a></code>:
          Added in MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#option_mysqld_mysqlx-socket">mysqlx-socket</a></code>:
          Added in MySQL 5.7.15.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#sysvar_mysqlx_max_allowed_packet">mysqlx_max_allowed_packet</a></code>:
          Added in MySQL 5.7.12.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#sysvar_mysqlx_port">mysqlx_port</a></code>:
          Added in MySQL 5.7.12.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#sysvar_mysqlx_port_open_timeout">mysqlx_port_open_timeout</a></code>:
          Added in MySQL 5.7.12.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="document-store.html#sysvar_mysqlx_socket">mysqlx_socket</a></code>:
          Added in MySQL 5.7.15.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_ngram_token_size">ngram_token_size</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_offline_mode">offline_mode</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_parser_max_mem_size">parser_max_mem_size</a></code>:
          Added in MySQL 5.7.12.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#option_mysqld_performance-schema-consumer-events-transactions-current">performance-schema-consumer-events-transactions-current</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#option_mysqld_performance-schema-consumer-events-transactions-history">performance-schema-consumer-events-transactions-history</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#option_mysqld_performance-schema-consumer-events-transactions-history-long">performance-schema-consumer-events-transactions-history-long</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_events_transactions_history_long_size">performance_schema_events_transactions_history_long_size</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_events_transactions_history_size">performance_schema_events_transactions_history_size</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_digest_length">performance_schema_max_digest_length</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_index_stat">performance_schema_max_index_stat</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_memory_classes">performance_schema_max_memory_classes</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_metadata_locks">performance_schema_max_metadata_locks</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_prepared_statements_instances">performance_schema_max_prepared_statements_instances</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_program_instances">performance_schema_max_program_instances</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_sql_text_length">performance_schema_max_sql_text_length</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_statement_stack">performance_schema_max_statement_stack</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="performance-schema.html#sysvar_performance_schema_max_table_lock_stat">performance_schema_max_table_lock_stat</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_range_optimizer_max_mem_size">range_optimizer_max_mem_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_rbr_exec_mode">rbr_exec_mode</a></code>:
          Added in MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_require_secure_transport">require_secure_transport</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_rewriter_enabled">rewriter_enabled</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_rewriter_verbose">rewriter_verbose</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_rpl_semi_sync_master_wait_for_slave_count">rpl_semi_sync_master_wait_for_slave_count</a></code>:
          Added in MySQL 5.7.3.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_rpl_semi_sync_master_wait_point">rpl_semi_sync_master_wait_point</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_rpl_stop_slave_timeout">rpl_stop_slave_timeout</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_session_track_gtids">session_track_gtids</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_session_track_schema">session_track_schema</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_session_track_state_change">session_track_state_change</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_session_track_system_variables">session_track_system_variables</a></code>:
          Added in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_session_track_transaction_info">session_track_transaction_info</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_sha256_password_auto_generate_rsa_keys">sha256_password_auto_generate_rsa_keys</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_sha256_password_proxy_users">sha256_password_proxy_users</a></code>:
          Added in MySQL 5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_show_compatibility_56">show_compatibility_56</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_show_create_table_verbosity">show_create_table_verbosity</a></code>:
          Added in MySQL 5.7.22.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_show_old_temporals">show_old_temporals</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_simplified_binlog_gtid_recovery">simplified_binlog_gtid_recovery</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#option_mysqld_slave-parallel-type">slave-parallel-type</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_slave_parallel_type">slave_parallel_type</a></code>:
          Added in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_slave_preserve_commit_order">slave_preserve_commit_order</a></code>:
          Added in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_super_read_only">super_read_only</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_pool_algorithm">thread_pool_algorithm</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_pool_high_priority_connection">thread_pool_high_priority_connection</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_pool_max_unused_threads">thread_pool_max_unused_threads</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_pool_prio_kickup_timer">thread_pool_prio_kickup_timer</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_pool_size">thread_pool_size</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_pool_stall_limit">thread_pool_stall_limit</a></code>:
          Added in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_tls_version">tls_version</a></code>:
          Added in MySQL 5.7.10.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_transaction_write_set_extraction">transaction_write_set_extraction</a></code>:
          Added in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#sysvar_validate_password_check_user_name">validate_password_check_user_name</a></code>:
          Added in MySQL 5.7.15.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_validate_password_dictionary_file_last_parsed">validate_password_dictionary_file_last_parsed</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="security.html#statvar_validate_password_dictionary_file_words_count">validate_password_dictionary_file_words_count</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_version_tokens_session">version_tokens_session</a></code>:
          Added in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_version_tokens_session_number">version_tokens_session_number</a></code>:
          Added in MySQL 5.7.8.
</p></li></ul>
</div>

</div>
<div class="simplesect">
<div class="titlepage">
<div>
<div class="simple">
<h3 class="title"><a name="optvars-deprecated"></a>Options and Variables Deprecated in MySQL 5.7</h3>

</div>

</div>

</div>
<p>
      The following system variables, status variables, and options have
      been deprecated in MySQL 5.7.
</p>
<div class="itemizedlist">
<a name="optvars-deprecated-list"></a><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Innodb_available_undo_logs">Innodb_available_undo_logs</a></code>:
          Display the total number of InnoDB rollback segments;
          different from innodb_rollback_segments, which displays the
          number of active rollback segments. Deprecated as of MySQL
          5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_free_blocks">Qcache_free_blocks</a></code>:
          Number of free memory blocks in the query cache. Deprecated as
          of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_free_memory">Qcache_free_memory</a></code>:
          The amount of free memory for the query cache. Deprecated as
          of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_hits">Qcache_hits</a></code>:
          Number of query cache hits. Deprecated as of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_inserts">Qcache_inserts</a></code>:
          Number of query cache inserts. Deprecated as of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_lowmem_prunes">Qcache_lowmem_prunes</a></code>:
          Number of queries that were deleted from the query cache due
          to lack of free memory in the cache. Deprecated as of MySQL
          5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_not_cached">Qcache_not_cached</a></code>:
          Number of noncached queries (not cacheable, or not cached due
          to the query_cache_type setting). Deprecated as of MySQL
          5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_queries_in_cache">Qcache_queries_in_cache</a></code>:
          Number of queries registered in the query cache. Deprecated as
          of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Qcache_total_blocks">Qcache_total_blocks</a></code>:
          The total number of blocks in the query cache. Deprecated as
          of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Slave_heartbeat_period">Slave_heartbeat_period</a></code>:
          The slave's replication heartbeat interval, in seconds.
          Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Slave_last_heartbeat">Slave_last_heartbeat</a></code>:
          Shows when the latest heartbeat signal was received, in
          TIMESTAMP format. Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Slave_received_heartbeats">Slave_received_heartbeats</a></code>:
          Number of heartbeats received by a replication slave since
          previous reset. Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Slave_retried_transactions">Slave_retried_transactions</a></code>:
          The total number of times since startup that the replication
          slave SQL thread has retried transactions. Deprecated as of
          MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Slave_running">Slave_running</a></code>:
          The state of this server as a replication slave (slave I/O
          thread status). Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_avoid_temporal_upgrade">avoid_temporal_upgrade</a></code>:
          Whether ALTER TABLE should upgrade pre-5.6.4 temporal columns.
          Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlog_max_flush_queue_time">binlog_max_flush_queue_time</a></code>:
          How long to read transactions before flushing to binary log.
          Deprecated as of MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_bootstrap">bootstrap</a></code>:
          Used by mysql installation scripts. Deprecated as of MySQL
          5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_des-key-file">des-key-file</a></code>:
          Load keys for des_encrypt() and des_encrypt from given file.
          Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_disable-partition-engine-check">disable-partition-engine-check</a></code>:
          Whether to disable the startup check for tables with nonnative
          partitioning. Deprecated as of MySQL 5.7.17.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#option_mysqld_executed-gtids-compression-period">executed-gtids-compression-period</a></code>:
          Deprecated and will be removed in a future version; use the
          renamed gtid-executed-compression-period instead. Deprecated
          as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_executed_gtids_compression_period">executed_gtids_compression_period</a></code>:
          Deprecated and will be removed in a future version; use the
          renamed gtid_executed_compression_period instead. Deprecated
          as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="group-replication.html#sysvar_group_replication_allow_local_disjoint_gtids_join">group_replication_allow_local_disjoint_gtids_join</a></code>:
          Allow the current server to join the group even if it has
          transactions not present in the group. Deprecated as of MySQL
          5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_have_crypt">have_crypt</a></code>:
          Availability of the crypt() system call. Deprecated as of
          MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_have_query_cache">have_query_cache</a></code>:
          Whether mysqld supports query cache. Deprecated as of MySQL
          5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_ignore-db-dir">ignore-db-dir</a></code>:
          Treat directory as nondatabase directory. Deprecated as of
          MySQL 5.7.16.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_ignore_db_dirs">ignore_db_dirs</a></code>:
          Directories treated as nondatabase directories. Deprecated as
          of MySQL 5.7.16.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#option_mysqld_innodb">innodb</a></code>:
          Enable InnoDB (if this version of MySQL supports it).
          Deprecated as of MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_file_format">innodb_file_format</a></code>:
          The format for new InnoDB tables. Deprecated as of MySQL
          5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_file_format_check">innodb_file_format_check</a></code>:
          Whether InnoDB performs file format compatibility checking.
          Deprecated as of MySQL 5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_file_format_max">innodb_file_format_max</a></code>:
          The file format tag in the shared tablespace. Deprecated as of
          MySQL 5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_large_prefix">innodb_large_prefix</a></code>:
          Enables longer keys for column prefix indexes. Deprecated as
          of MySQL 5.7.7.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_support_xa">innodb_support_xa</a></code>:
          Enable InnoDB support for the XA two-phase commit. Deprecated
          as of MySQL 5.7.10.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_undo_logs">innodb_undo_logs</a></code>:
          Defines the number of undo logs (rollback segments) used by
          InnoDB; an alias for innodb_rollback_segments. Deprecated as
          of MySQL 5.7.19.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_undo_tablespaces">innodb_undo_tablespaces</a></code>:
          The number of tablespace files that rollback segments are
          divided between. Deprecated as of MySQL 5.7.21.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_log-warnings">log-warnings</a></code>:
          Log some noncritical warnings to the log file. Deprecated as
          of MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_metadata_locks_cache_size">metadata_locks_cache_size</a></code>:
          Size of the metadata locks cache. Deprecated as of MySQL
          5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_metadata_locks_hash_instances">metadata_locks_hash_instances</a></code>:
          Number of metadata lock hashes. Deprecated as of MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_old_passwords">old_passwords</a></code>:
          Selects password hashing method for PASSWORD(). Deprecated as
          of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_partition">partition</a></code>:
          Enable (or disable) partitioning support. Deprecated as of
          MySQL 5.7.16.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_query_cache_limit">query_cache_limit</a></code>:
          Do not cache results that are bigger than this. Deprecated as
          of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_query_cache_min_res_unit">query_cache_min_res_unit</a></code>:
          Minimal size of unit in which space for results is allocated
          (last unit will be trimmed after writing all result data).
          Deprecated as of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_query_cache_size">query_cache_size</a></code>:
          The memory allocated to store results from old queries.
          Deprecated as of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_query_cache_type">query_cache_type</a></code>:
          Query cache type. Deprecated as of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_query_cache_wlock_invalidate">query_cache_wlock_invalidate</a></code>:
          Invalidate queries in query cache on LOCK for write.
          Deprecated as of MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_secure-auth">secure-auth</a></code>:
          Disallow authentication for accounts that have old (pre-4.1)
          passwords. Deprecated as of MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_show_compatibility_56">show_compatibility_56</a></code>:
          Compatibility for SHOW STATUS/VARIABLES. Deprecated as of
          MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_show_old_temporals">show_old_temporals</a></code>:
          Whether SHOW CREATE TABLE should indicate pre-5.6.4 temporal
          columns. Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_simplified_binlog_gtid_recovery">simplified_binlog_gtid_recovery</a></code>:
          Controls how binary logs are iterated during GTID recovery.
          Deprecated as of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_skip-partition">skip-partition</a></code>:
          Do not enable user-defined partitioning. Deprecated as of
          MySQL 5.7.16.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_sync_frm">sync_frm</a></code>:
          Sync .frm to disk on create. Enabled by default. Deprecated as
          of MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_temp-pool">temp-pool</a></code>:
          Using this option will cause most temporary files created to
          use a small set of names, rather than a unique name for each
          new file. Deprecated as of MySQL 5.7.18.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_tx_isolation">tx_isolation</a></code>:
          The default transaction isolation level. Deprecated as of
          MySQL 5.7.20.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_tx_read_only">tx_read_only</a></code>:
          Default transaction access mode. Deprecated as of MySQL
          5.7.20.
</p></li></ul>
</div>

</div>
<div class="simplesect">
<div class="titlepage">
<div>
<div class="simple">
<h3 class="title"><a name="optvars-removed"></a>Options and Variables Removed in MySQL 5.7</h3>

</div>

</div>

</div>
<p>
      The following system variables, status variables, and options have
      been removed in MySQL 5.7.
</p>
<div class="itemizedlist">
<a name="optvars-removed-list"></a><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_statement_time_exceeded">Max_statement_time_exceeded</a></code>:
          Number of statements that exceeded the execution timeout
          value. Removed in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_statement_time_set">Max_statement_time_set</a></code>:
          Number of statements for which execution timeout was set.
          Removed in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#statvar_Max_statement_time_set_failed">Max_statement_time_set_failed</a></code>:
          Number of statements for which execution timeout setting
          failed. Removed in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_binlogging_impossible_mode">binlogging_impossible_mode</a></code>:
          Deprecated and will be removed in a future version. Use the
          renamed binlog_error_action instead.. Removed in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_default-authentication-plugin">default-authentication-plugin</a></code>:
          The default authentication plugin. Removed in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_additional_mem_pool_size">innodb_additional_mem_pool_size</a></code>:
          Size of a memory pool InnoDB uses to store data dictionary
          information and other internal data structures. Removed in
          MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_log_checksum_algorithm">innodb_log_checksum_algorithm</a></code>:
          Specifies how to generate and verify the checksum stored in
          each redo log disk block. Removed in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_optimize_point_storage">innodb_optimize_point_storage</a></code>:
          Enable this option to store POINT data as fixed-length data
          rather than a variable-length data. Removed in MySQL 5.7.6.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="innodb-storage-engine.html#sysvar_innodb_use_sys_malloc">innodb_use_sys_malloc</a></code>:
          Whether InnoDB uses the OS or its own memory allocator.
          Removed in MySQL 5.7.4.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#option_mysqld_log-slow-admin-statements">log-slow-admin-statements</a></code>:
          Log slow OPTIMIZE, ANALYZE, ALTER and other administrative
          statements to the slow query log if it is open. Removed in
          MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#option_mysqld_log-slow-slave-statements">log-slow-slave-statements</a></code>:
          Cause slow statements as executed by the slave to be written
          to the slow query log. Removed in MySQL 5.7.1.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="replication.html#sysvar_log_backward_compatible_user_definitions">log_backward_compatible_user_definitions</a></code>:
          Whether to log CREATE/ALTER USER, GRANT in backward-compatible
          fashion. Removed in MySQL 5.7.9.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_max_statement_time">max_statement_time</a></code>:
          Statement execution timeout value. Removed in MySQL 5.7.8.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_storage_engine">storage_engine</a></code>:
          The default storage engine. Removed in MySQL 5.7.5.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_thread_concurrency">thread_concurrency</a></code>:
          Permits the application to give the threads system a hint for
          the desired number of threads that should be run at the same
          time. Removed in MySQL 5.7.2.
        </p></li><li class="listitem"><p>
          <code class="literal"><a class="link" href="server-administration.html#sysvar_timed_mutexes">timed_mutexes</a></code>:
          Specify whether to time mutexes (only InnoDB mutexes are
          currently supported). Removed in MySQL 5.7.5.
</p></li></ul>
</div>

</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="information-sources"></a>1.6 MySQL Information Sources</h2>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#mysql-web-sites">1.6.1 MySQL Websites</a></span></dt><dt><span class="section"><a href="introduction.html#mailing-lists">1.6.2 MySQL Mailing Lists</a></span></dt><dt><span class="section"><a href="introduction.html#forums">1.6.3 MySQL Community Support at the MySQL Forums</a></span></dt><dt><span class="section"><a href="introduction.html#irc">1.6.4 MySQL Community Support on Internet Relay Chat (IRC)</a></span></dt><dt><span class="section"><a href="introduction.html#mysql-enterprise-information">1.6.5 MySQL Enterprise</a></span></dt></dl>
</div>
<p>
    This section lists sources of additional information that you may
    find helpful, such as MySQL websites, mailing lists, user forums,
    and Internet Relay Chat.
</p>
<div class="section">

<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="mysql-web-sites"></a>1.6.1 MySQL Websites</h3>
</div>
</div>
</div>
<a class="indexterm" name="idm139684846503424"></a><a class="indexterm" name="idm139684846501936"></a><p>
      The primary website for MySQL documentation is
      <a class="ulink" href="http://dev.mysql.com/doc/" target="_top">http://dev.mysql.com/doc/</a>. Online and downloadable
      documentation formats are available for the MySQL Reference
      Manual, MySQL Connectors, and more.
    </p><p>
      The MySQL developers provide information about new and upcoming
      features as the <a class="ulink" href="http://mysqlserverteam.com/" target="_top">MySQL
      Server Blog</a>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="mailing-lists"></a>1.6.2 MySQL Mailing Lists</h3>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#mailing-list-use">1.6.2.1 Guidelines for Using the Mailing Lists</a></span></dt></dl>
</div>
<a class="indexterm" name="idm139684846496880"></a><a class="indexterm" name="idm139684846495808"></a><a class="indexterm" name="idm139684846494736"></a><a class="indexterm" name="idm139684846493664"></a><p>
      This section introduces the MySQL mailing lists and provides
      guidelines as to how the lists should be used. When you subscribe
      to a mailing list, you receive all postings to the list as email
      messages. You can also send your own questions and answers to the
      list.
    </p><p>
      To subscribe to or unsubscribe from any of the mailing lists
      described in this section, visit
      <a class="ulink" href="http://lists.mysql.com/" target="_top">http://lists.mysql.com/</a>. For most of them, you can
      select the regular version of the list where you get individual
      messages, or a digest version where you get one large message per
      day.
    </p><p>
      Please <span class="emphasis"><em>do not</em></span> send messages about subscribing
      or unsubscribing to any of the mailing lists, because such
      messages are distributed automatically to thousands of other
      users.
    </p><p>
      Your local site may have many subscribers to a MySQL mailing list.
      If so, the site may have a local mailing list, so that messages
      sent from <code class="literal">lists.mysql.com</code> to your site are
      propagated to the local list. In such cases, please contact your
      system administrator to be added to or dropped from the local
      MySQL list.
    </p><p>
      To have traffic for a mailing list go to a separate mailbox in
      your mail program, set up a filter based on the message headers.
      You can use either the <code class="literal">List-ID:</code> or
      <code class="literal">Delivered-To:</code> headers to identify list
      messages.
    </p><p>
      The MySQL mailing lists are as follows:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <code class="literal">announce</code>
        </p><p>
          The list for announcements of new versions of MySQL and
          related programs. This is a low-volume list to which all MySQL
          users should subscribe.
        </p></li><li class="listitem"><p>
          <code class="literal">mysql</code>
        </p><p>
          The main list for general MySQL discussion. Please note that
          some topics are better discussed on the more-specialized
          lists. If you post to the wrong list, you may not get an
          answer.
        </p></li><li class="listitem"><p>
          <code class="literal">bugs</code>
        </p><p>
          The list for people who want to stay informed about issues
          reported since the last release of MySQL or who want to be
          actively involved in the process of bug hunting and fixing.
          See <a class="xref" href="introduction.html#bug-reports" title="1.7 How to Report Bugs or Problems">Section 1.7, “How to Report Bugs or Problems”</a>.
        </p></li><li class="listitem"><p>
          <code class="literal">internals</code>
        </p><p>
          The list for people who work on the MySQL code. This is also
          the forum for discussions on MySQL development and for posting
          patches.
        </p></li><li class="listitem"><p>
          <code class="literal">mysqldoc</code>
        </p><p>
          The list for people who work on the MySQL documentation.
        </p></li><li class="listitem"><p>
          <code class="literal">benchmarks</code>
        </p><p>
          The list for anyone interested in performance issues.
          Discussions concentrate on database performance (not limited
          to MySQL), but also include broader categories such as
          performance of the kernel, file system, disk system, and so
          on.
        </p></li><li class="listitem"><p>
          <code class="literal">packagers</code>
        </p><p>
          The list for discussions on packaging and distributing MySQL.
          This is the forum used by distribution maintainers to exchange
          ideas on packaging MySQL and on ensuring that MySQL looks and
          feels as similar as possible on all supported platforms and
          operating systems.
        </p></li><li class="listitem"><p>
          <code class="literal">java</code>
        </p><p>
          The list for discussions about the MySQL server and Java. It
          is mostly used to discuss JDBC drivers such as MySQL
          Connector/J.
        </p></li><li class="listitem"><p>
          <code class="literal">win32</code>
        </p><p>
          The list for all topics concerning the MySQL software on
          Microsoft operating systems, such as Windows 9x, Me, NT, 2000,
          XP, and 2003.
        </p></li><li class="listitem"><p>
          <code class="literal">myodbc</code>
        </p><p>
          The list for all topics concerning connecting to the MySQL
          server with ODBC.
        </p></li><li class="listitem"><p>
          <code class="literal">gui-tools</code>
        </p><p>
          The list for all topics concerning MySQL graphical user
          interface tools such as MySQL Workbench.
        </p></li><li class="listitem"><p>
          <code class="literal">cluster</code>
        </p><p>
          The list for discussion of MySQL Cluster.
        </p></li><li class="listitem"><p>
          <code class="literal">dotnet</code>
        </p><p>
          The list for discussion of the MySQL server and the .NET
          platform. It is mostly related to MySQL Connector/NET.
        </p></li><li class="listitem"><p>
          <code class="literal">plusplus</code>
        </p><p>
          The list for all topics concerning programming with the C++
          API for MySQL.
        </p></li><li class="listitem"><p>
          <code class="literal">perl</code>
        </p><p>
          The list for all topics concerning Perl support for MySQL with
          <code class="literal">DBD::mysql</code>.
</p></li></ul>
</div>
<p>
      If you're unable to get an answer to your questions from a MySQL
      mailing list or forum, one option is to purchase support from
      Oracle. This puts you in direct contact with MySQL developers.
    </p><p>
      The following MySQL mailing lists are in languages other than
      English. These lists are not operated by Oracle.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <code class="literal"><code class="email">&lt;<a class="email" href="mailto:mysql-france-subscribe@yahoogroups.com">mysql-france-subscribe@yahoogroups.com</a>&gt;</code></code>
        </p><p>
          A French mailing list.
        </p></li><li class="listitem"><p>
          <code class="literal"><code class="email">&lt;<a class="email" href="mailto:list@tinc.net">list@tinc.net</a>&gt;</code></code>
        </p><p>
          A Korean mailing list. To subscribe, email <code class="literal">subscribe
          mysql your@email.address</code> to this list.
        </p></li><li class="listitem"><p>
          <code class="literal"><code class="email">&lt;<a class="email" href="mailto:mysql-de-request@lists.4t2.com">mysql-de-request@lists.4t2.com</a>&gt;</code></code>
        </p><p>
          A German mailing list. To subscribe, email <code class="literal">subscribe
          mysql-de your@email.address</code> to this list. You can
          find information about this mailing list at
          <a class="ulink" href="http://www.4t2.com/mysql/" target="_top">http://www.4t2.com/mysql/</a>.
        </p></li><li class="listitem"><p>
          <code class="literal"><code class="email">&lt;<a class="email" href="mailto:mysql-br-request@listas.linkway.com.br">mysql-br-request@listas.linkway.com.br</a>&gt;</code></code>
        </p><p>
          A Portuguese mailing list. To subscribe, email
          <code class="literal">subscribe mysql-br your@email.address</code> to
          this list.
        </p></li><li class="listitem"><p>
          <code class="literal"><code class="email">&lt;<a class="email" href="mailto:mysql-alta@elistas.net">mysql-alta@elistas.net</a>&gt;</code></code>
        </p><p>
          A Spanish mailing list. To subscribe, email <code class="literal">subscribe
          mysql your@email.address</code> to this list.
</p></li></ul>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="mailing-list-use"></a>1.6.2.1 Guidelines for Using the Mailing Lists</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684846436640"></a><a class="indexterm" name="idm139684846435600"></a><a class="indexterm" name="idm139684846434112"></a><a class="indexterm" name="idm139684846432624"></a><p>
        Please do not post mail messages from your browser with HTML
        mode turned on. Many users do not read mail with a browser.
      </p><p>
        When you answer a question sent to a mailing list, if you
        consider your answer to have broad interest, you may want to
        post it to the list instead of replying directly to the
        individual who asked. Try to make your answer general enough
        that people other than the original poster may benefit from it.
        When you post to the list, please make sure that your answer is
        not a duplication of a previous answer.
      </p><p>
        Try to summarize the essential part of the question in your
        reply. Do not feel obliged to quote the entire original message.
      </p><p>
        When answers are sent to you individually and not to the mailing
        list, it is considered good etiquette to summarize the answers
        and send the summary to the mailing list so that others may have
        the benefit of responses you received that helped you solve your
        problem.
</p>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="forums"></a>1.6.3 MySQL Community Support at the MySQL Forums</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684846426800"></a><a class="indexterm" name="idm139684846425344"></a><p>
      The forums at <a class="ulink" href="http://forums.mysql.com" target="_top">http://forums.mysql.com</a> are an
      important community resource. Many forums are available, grouped
      into these general categories:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Migration
        </p></li><li class="listitem"><p>
          MySQL Usage
        </p></li><li class="listitem"><p>
          MySQL Connectors
        </p></li><li class="listitem"><p>
          Programming Languages
        </p></li><li class="listitem"><p>
          Tools
        </p></li><li class="listitem"><p>
          3rd-Party Applications
        </p></li><li class="listitem"><p>
          Storage Engines
        </p></li><li class="listitem"><p>
          MySQL Technology
        </p></li><li class="listitem"><p>
          SQL Standards
        </p></li><li class="listitem"><p>
          Business
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="irc"></a>1.6.4 MySQL Community Support on Internet Relay Chat (IRC)</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684846413408"></a><a class="indexterm" name="idm139684846412400"></a><p>
      In addition to the various MySQL mailing lists and forums, you can
      find experienced community people on Internet Relay Chat (IRC).
      These are the best networks/channels currently known to us:
    </p><p>
      <span class="bold"><strong>freenode</strong></span> (see
      <a class="ulink" href="http://www.freenode.net/" target="_top">http://www.freenode.net/</a> for servers)
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          <code class="literal">#mysql</code> is primarily for MySQL questions,
          but other database and general SQL questions are welcome.
          Questions about PHP, Perl, or C in combination with MySQL are
          also common.
        </p></li><li class="listitem"><p>
          <code class="literal">#workbench</code> is primarily for MySQL Workbench
          related questions and thoughts, and it is also a good place to
          meet the MySQL Workbench developers.
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="mysql-enterprise-information"></a>1.6.5 MySQL Enterprise</h3>

</div>

</div>

</div>
<p>
      Oracle offers technical support in the form of MySQL Enterprise.
      For organizations that rely on the MySQL DBMS for
      business-critical production applications, MySQL Enterprise is a
      commercial subscription offering which includes:

</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            MySQL Enterprise Server
          </p></li><li class="listitem"><p>
            MySQL Enterprise Monitor
          </p></li><li class="listitem"><p>
            Monthly Rapid Updates and Quarterly Service Packs
          </p></li><li class="listitem"><p>
            MySQL Knowledge Base
          </p></li><li class="listitem"><p>
            24x7 Technical and Consultative Support
</p></li></ul>
</div>
<p>

      MySQL Enterprise is available in multiple tiers, giving you the
      flexibility to choose the level of service that best matches your
      needs. For more information, see
      <a class="ulink" href="http://www.mysql.com/products/enterprise/" target="_top">MySQL Enterprise</a>.
</p>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="bug-reports"></a>1.7 How to Report Bugs or Problems</h2>

</div>

</div>

</div>
<a class="indexterm" name="idm139684846396224"></a><a class="indexterm" name="idm139684846394800"></a><a class="indexterm" name="idm139684846393312"></a><a class="indexterm" name="idm139684846391824"></a><a class="indexterm" name="idm139684846390336"></a><a class="indexterm" name="idm139684846388848"></a><a class="indexterm" name="idm139684846387360"></a><a class="indexterm" name="idm139684846385872"></a><a class="indexterm" name="idm139684846384384"></a><a class="indexterm" name="idm139684846383312"></a><p>
    Before posting a bug report about a problem, please try to verify
    that it is a bug and that it has not been reported already:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Start by searching the MySQL online manual at
        <a class="ulink" href="http://dev.mysql.com/doc/" target="_top">http://dev.mysql.com/doc/</a>. We try to keep the manual up to
        date by updating it frequently with solutions to newly found
        problems. In addition, the release notes accompanying the manual
        can be particularly useful since it is quite possible that a
        newer version contains a solution to your problem. The release
        notes are available at the location just given for the manual.
      </p></li><li class="listitem"><p>
        If you get a parse error for an SQL statement, please check your
        syntax closely. If you cannot find something wrong with it, it
        is extremely likely that your current version of MySQL Server
        doesn't support the syntax you are using. If you are using the
        current version and the manual doesn't cover the syntax that you
        are using, MySQL Server doesn't support your statement.
      </p><p>
        If the manual covers the syntax you are using, but you have an
        older version of MySQL Server, you should check the MySQL change
        history to see when the syntax was implemented. In this case,
        you have the option of upgrading to a newer version of MySQL
        Server.
      </p></li><li class="listitem"><p>
        For solutions to some common problems, see
        <a class="xref" href="error-handling.html#problems" title="B.5 Problems and Common Errors">Section B.5, “Problems and Common Errors”</a>.
      </p></li><li class="listitem"><p>
        Search the bugs database at
        <a class="ulink" href="http://bugs.mysql.com/" target="_top">http://bugs.mysql.com/</a> to see whether the bug has
        been reported and fixed.
      </p></li><li class="listitem"><p>
        Search the MySQL mailing list archives at
        <a class="ulink" href="http://lists.mysql.com/" target="_top">http://lists.mysql.com/</a>. See
        <a class="xref" href="introduction.html#mailing-lists" title="1.6.2 MySQL Mailing Lists">Section 1.6.2, “MySQL Mailing Lists”</a>.
      </p></li><li class="listitem"><p>
        You can also use <a class="ulink" href="http://www.mysql.com/search/" target="_top">http://www.mysql.com/search/</a> to
        search all the Web pages (including the manual) that are located
        at the MySQL website.
</p></li></ul>
</div>
<p>
    If you cannot find an answer in the manual, the bugs database, or
    the mailing list archives, check with your local MySQL expert. If
    you still cannot find an answer to your question, please use the
    following guidelines for reporting the bug.
  </p><p>
    The normal way to report bugs is to visit
    <a class="ulink" href="http://bugs.mysql.com/" target="_top">http://bugs.mysql.com/</a>, which is the address for our
    bugs database. This database is public and can be browsed and
    searched by anyone. If you log in to the system, you can enter new
    reports.
  </p><p>
    Bugs posted in the bugs database at
    <a class="ulink" href="http://bugs.mysql.com/" target="_top">http://bugs.mysql.com/</a> that are corrected for a given
    release are noted in the release notes.
  </p><p>
    If you find a sensitive security bug in MySQL Server, please let us
    know immediately by sending an email message to
    <code class="email">&lt;<a class="email" href="mailto:secalert_us@oracle.com">secalert_us@oracle.com</a>&gt;</code>. Exception: Support customers
    should report all problems, including security bugs, to Oracle
    Support at <a class="ulink" href="http://support.oracle.com/" target="_top">http://support.oracle.com/</a>.
  </p><p>
    To discuss problems with other users, you can use one of the MySQL
    mailing lists. <a class="xref" href="introduction.html#mailing-lists" title="1.6.2 MySQL Mailing Lists">Section 1.6.2, “MySQL Mailing Lists”</a>.
  </p><p>
    Writing a good bug report takes patience, but doing it right the
    first time saves time both for us and for yourself. A good bug
    report, containing a full test case for the bug, makes it very
    likely that we will fix the bug in the next release. This section
    helps you write your report correctly so that you do not waste your
    time doing things that may not help us much or at all. Please read
    this section carefully and make sure that all the information
    described here is included in your report.
  </p><p>
    Preferably, you should test the problem using the latest production
    or development version of MySQL Server before posting. Anyone should
    be able to repeat the bug by just using <code class="literal">mysql test &lt;
    script_file</code> on your test case or by running the shell or
    Perl script that you include in the bug report. Any bug that we are
    able to repeat has a high chance of being fixed in the next MySQL
    release.
  </p><p>
    It is most helpful when a good description of the problem is
    included in the bug report. That is, give a good example of
    everything you did that led to the problem and describe, in exact
    detail, the problem itself. The best reports are those that include
    a full example showing how to reproduce the bug or problem. See
    <a class="xref" href="extending-mysql.html#porting" title="28.5 Debugging and Porting MySQL">Section 28.5, “Debugging and Porting MySQL”</a>.
  </p><p>
    Remember that it is possible for us to respond to a report
    containing too much information, but not to one containing too
    little. People often omit facts because they think they know the
    cause of a problem and assume that some details do not matter. A
    good principle to follow is that if you are in doubt about stating
    something, state it. It is faster and less troublesome to write a
    couple more lines in your report than to wait longer for the answer
    if we must ask you to provide information that was missing from the
    initial report.
  </p><p>
    The most common errors made in bug reports are (a) not including the
    version number of the MySQL distribution that you use, and (b) not
    fully describing the platform on which the MySQL server is installed
    (including the platform type and version number). These are highly
    relevant pieces of information, and in 99 cases out of 100, the bug
    report is useless without them. Very often we get questions like,
    <span class="quote">“<span class="quote">Why doesn't this work for me?</span>”</span> Then we find that the
    feature requested wasn't implemented in that MySQL version, or that
    a bug described in a report has been fixed in newer MySQL versions.
    Errors often are platform-dependent. In such cases, it is next to
    impossible for us to fix anything without knowing the operating
    system and the version number of the platform.
  </p><p>
    If you compiled MySQL from source, remember also to provide
    information about your compiler if it is related to the problem.
    Often people find bugs in compilers and think the problem is
    MySQL-related. Most compilers are under development all the time and
    become better version by version. To determine whether your problem
    depends on your compiler, we need to know what compiler you used.
    Note that every compiling problem should be regarded as a bug and
    reported accordingly.
  </p><p>
    If a program produces an error message, it is very important to
    include the message in your report. If we try to search for
    something from the archives, it is better that the error message
    reported exactly matches the one that the program produces. (Even
    the lettercase should be observed.) It is best to copy and paste the
    entire error message into your report. You should never try to
    reproduce the message from memory.
  </p><p>
    If you have a problem with Connector/ODBC (MyODBC), please try to
    generate a trace file and send it with your report. See
    <a class="ulink" href="http://dev.mysql.com/doc/connector-odbc/en/connector-odbc-support-bug-report.html" target="_top">How to Report Connector/ODBC Problems or Bugs</a>.
  </p><p>
    If your report includes long query output lines from test cases that
    you run with the <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> command-line tool, you can
    make the output more readable by using the
    <a class="link" href="programs.html#option_mysql_vertical"><code class="option">--vertical</code></a> option or the
    <code class="literal">\G</code> statement terminator. The
    <a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN Syntax"><code class="literal">EXPLAIN SELECT</code></a>
    example later in this section demonstrates the use of
    <code class="literal">\G</code>.
  </p><p>
    Please include the following information in your report:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        The version number of the MySQL distribution you are using (for
        example, MySQL 5.7.10). You can find out which version you are
        running by executing <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin version</strong></span></a>. The
        <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin</strong></span></a> program can be found in the
        <code class="filename">bin</code> directory under your MySQL installation
        directory.
      </p></li><li class="listitem"><p>
        The manufacturer and model of the machine on which you
        experience the problem.
      </p></li><li class="listitem"><p>
        The operating system name and version. If you work with Windows,
        you can usually get the name and version number by
        double-clicking your My Computer icon and pulling down the
        <span class="quote">“<span class="quote">Help/About Windows</span>”</span> menu. For most Unix-like
        operating systems, you can get this information by executing the
        command <code class="literal">uname -a</code>.
      </p></li><li class="listitem"><p>
        Sometimes the amount of memory (real and virtual) is relevant.
        If in doubt, include these values.
      </p></li><li class="listitem"><p>
        The contents of the <code class="filename">docs/INFO_BIN</code> file from
        your MySQL installation. This file contains information about
        how MySQL was configured and compiled.
      </p></li><li class="listitem"><p>
        If you are using a source distribution of the MySQL software,
        include the name and version number of the compiler that you
        used. If you have a binary distribution, include the
        distribution name.
      </p></li><li class="listitem"><p>
        If the problem occurs during compilation, include the exact
        error messages and also a few lines of context around the
        offending code in the file where the error occurs.
      </p></li><li class="listitem"><p>
        If <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> died, you should also report the
        statement that crashed <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a>. You can
        usually get this information by running
        <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> with query logging enabled, and then
        looking in the log after <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> crashes. See
        <a class="xref" href="extending-mysql.html#porting" title="28.5 Debugging and Porting MySQL">Section 28.5, “Debugging and Porting MySQL”</a>.
      </p></li><li class="listitem"><p>
        If a database table is related to the problem, include the
        output from the <code class="literal">SHOW CREATE TABLE
        <em class="replaceable"><code>db_name</code></em>.<em class="replaceable"><code>tbl_name</code></em></code>
        statement in the bug report. This is a very easy way to get the
        definition of any table in a database. The information helps us
        create a situation matching the one that you have experienced.
      </p></li><li class="listitem"><p>
        The SQL mode in effect when the problem occurred can be
        significant, so please report the value of the
        <a class="link" href="server-administration.html#sysvar_sql_mode"><code class="literal">sql_mode</code></a> system variable. For
        stored procedure, stored function, and trigger objects, the
        relevant <a class="link" href="server-administration.html#sysvar_sql_mode"><code class="literal">sql_mode</code></a> value is the
        one in effect when the object was created. For a stored
        procedure or function, the <a class="link" href="sql-syntax.html#show-create-procedure" title="13.7.5.9 SHOW CREATE PROCEDURE Syntax"><code class="literal">SHOW CREATE
        PROCEDURE</code></a> or <a class="link" href="sql-syntax.html#show-create-function" title="13.7.5.8 SHOW CREATE FUNCTION Syntax"><code class="literal">SHOW CREATE
        FUNCTION</code></a> statement shows the relevant SQL mode, or you
        can query <code class="literal">INFORMATION_SCHEMA</code> for the
        information:
      </p><pre class="programlisting">
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE
FROM INFORMATION_SCHEMA.ROUTINES;
</pre><p>
        For triggers, you can use this statement:
      </p><pre class="programlisting">
SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE
FROM INFORMATION_SCHEMA.TRIGGERS;
</pre></li><li class="listitem"><p>
        For performance-related bugs or problems with
        <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> statements, you should
        always include the output of <code class="literal">EXPLAIN SELECT
        ...</code>, and at least the number of rows that the
        <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> statement produces. You
        should also include the output from <code class="literal">SHOW CREATE TABLE
        <em class="replaceable"><code>tbl_name</code></em></code> for each table
        that is involved. The more information you provide about your
        situation, the more likely it is that someone can help you.
      </p><p>
        The following is an example of a very good bug report. The
        statements are run using the <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a>
        command-line tool. Note the use of the <code class="literal">\G</code>
        statement terminator for statements that would otherwise provide
        very long output lines that are difficult to read.
      </p><pre class="programlisting">
mysql&gt; <strong class="userinput"><code>SHOW VARIABLES;</code></strong>
mysql&gt; <strong class="userinput"><code>SHOW COLUMNS FROM ...\G</code></strong>
       <em class="replaceable"><code>&lt;output from SHOW COLUMNS&gt;</code></em>
mysql&gt; <strong class="userinput"><code>EXPLAIN SELECT ...\G</code></strong>
       <em class="replaceable"><code>&lt;output from EXPLAIN&gt;</code></em>
mysql&gt; <strong class="userinput"><code>FLUSH STATUS;</code></strong>
mysql&gt; <strong class="userinput"><code>SELECT ...;</code></strong>
       <em class="replaceable"><code>&lt;A short version of the output from SELECT,
       including the time taken to run the query&gt;</code></em>
mysql&gt; <strong class="userinput"><code>SHOW STATUS;</code></strong>
       <em class="replaceable"><code>&lt;output from SHOW STATUS&gt;</code></em>
</pre></li><li class="listitem"><p>
        If a bug or problem occurs while running
        <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a>, try to provide an input script that
        reproduces the anomaly. This script should include any necessary
        source files. The more closely the script can reproduce your
        situation, the better. If you can make a reproducible test case,
        you should upload it to be attached to the bug report.
      </p><p>
        If you cannot provide a script, you should at least include the
        output from <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin variables extended-status
        processlist</strong></span></a> in your report to provide some information
        on how your system is performing.
      </p></li><li class="listitem"><p>
        If you cannot produce a test case with only a few rows, or if
        the test table is too big to be included in the bug report (more
        than 10 rows), you should dump your tables using
        <a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump — A Database Backup Program"><span class="command"><strong>mysqldump</strong></span></a> and create a
        <code class="filename">README</code> file that describes your problem.
        Create a compressed archive of your files using
        <span class="command"><strong>tar</strong></span> and <span class="command"><strong>gzip</strong></span> or
        <span class="command"><strong>zip</strong></span>. After you initiate a bug report for our
        bugs database at <a class="ulink" href="http://bugs.mysql.com/" target="_top">http://bugs.mysql.com/</a>, click
        the Files tab in the bug report for instructions on uploading
        the archive to the bugs database.
      </p></li><li class="listitem"><p>
        If you believe that the MySQL server produces a strange result
        from a statement, include not only the result, but also your
        opinion of what the result should be, and an explanation
        describing the basis for your opinion.
      </p></li><li class="listitem"><p>
        When you provide an example of the problem, it is better to use
        the table names, variable names, and so forth that exist in your
        actual situation than to come up with new names. The problem
        could be related to the name of a table or variable. These cases
        are rare, perhaps, but it is better to be safe than sorry. After
        all, it should be easier for you to provide an example that uses
        your actual situation, and it is by all means better for us. If
        you have data that you do not want to be visible to others in
        the bug report, you can upload it using the Files tab as
        previously described. If the information is really top secret
        and you do not want to show it even to us, go ahead and provide
        an example using other names, but please regard this as the last
        choice.
      </p></li><li class="listitem"><p>
        Include all the options given to the relevant programs, if
        possible. For example, indicate the options that you use when
        you start the <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> server, as well as the
        options that you use to run any MySQL client programs. The
        options to programs such as <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> and
        <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a>, and to the
        <span class="command"><strong>configure</strong></span> script, are often key to resolving
        problems and are very relevant. It is never a bad idea to
        include them. If your problem involves a program written in a
        language such as Perl or PHP, please include the language
        processor's version number, as well as the version for any
        modules that the program uses. For example, if you have a Perl
        script that uses the <code class="literal">DBI</code> and
        <code class="literal">DBD::mysql</code> modules, include the version
        numbers for Perl, <code class="literal">DBI</code>, and
        <code class="literal">DBD::mysql</code>.
      </p></li><li class="listitem"><p>
        If your question is related to the privilege system, please
        include the output of <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin reload</strong></span></a>, and
        all the error messages you get when trying to connect. When you
        test your privileges, you should execute <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin
        reload version</strong></span></a> and try to connect with the program
        that gives you trouble.
      </p></li><li class="listitem"><p>
        If you have a patch for a bug, do include it. But do not assume
        that the patch is all we need, or that we can use it, if you do
        not provide some necessary information such as test cases
        showing the bug that your patch fixes. We might find problems
        with your patch or we might not understand it at all. If so, we
        cannot use it.
      </p><p>
        If we cannot verify the exact purpose of the patch, we will not
        use it. Test cases help us here. Show that the patch handles all
        the situations that may occur. If we find a borderline case
        (even a rare one) where the patch will not work, it may be
        useless.
      </p></li><li class="listitem"><p>
        Guesses about what the bug is, why it occurs, or what it depends
        on are usually wrong. Even the MySQL team cannot guess such
        things without first using a debugger to determine the real
        cause of a bug.
      </p></li><li class="listitem"><p>
        Indicate in your bug report that you have checked the reference
        manual and mail archive so that others know you have tried to
        solve the problem yourself.
      </p></li><li class="listitem"><p>
        If your data appears corrupt or you get errors when you access a
        particular table, first check your tables with
        <a class="link" href="sql-syntax.html#check-table" title="13.7.2.2 CHECK TABLE Syntax"><code class="literal">CHECK TABLE</code></a>. If that statement
        reports any errors:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
            The <code class="literal">InnoDB</code> crash recovery mechanism
            handles cleanup when the server is restarted after being
            killed, so in typical operation there is no need to
            <span class="quote">“<span class="quote">repair</span>”</span> tables. If you encounter an error with
            <code class="literal">InnoDB</code> tables, restart the server and see
            whether the problem persists, or whether the error affected
            only cached data in memory. If data is corrupted on disk,
            consider restarting with the
            <a class="link" href="innodb-storage-engine.html#sysvar_innodb_force_recovery"><code class="literal">innodb_force_recovery</code></a>
            option enabled so that you can dump the affected tables.
          </p></li><li class="listitem"><p>
            For non-transactional tables, try to repair them with
            <a class="link" href="sql-syntax.html#repair-table" title="13.7.2.5 REPAIR TABLE Syntax"><code class="literal">REPAIR TABLE</code></a> or with
            <a class="link" href="programs.html#myisamchk" title="4.6.3 myisamchk — MyISAM Table-Maintenance Utility"><span class="command"><strong>myisamchk</strong></span></a>. See
            <a class="xref" href="server-administration.html" title="Chapter 5 MySQL Server Administration">Chapter 5, <i>MySQL Server Administration</i></a>.
</p></li></ul>
</div>
<p>
        If you are running Windows, please verify the value of
        <a class="link" href="server-administration.html#sysvar_lower_case_table_names"><code class="literal">lower_case_table_names</code></a> using
        the <code class="literal">SHOW VARIABLES LIKE
        'lower_case_table_names'</code> statement. This variable
        affects how the server handles lettercase of database and table
        names. Its effect for a given value should be as described in
        <a class="xref" href="language-structure.html#identifier-case-sensitivity" title="9.2.2 Identifier Case Sensitivity">Section 9.2.2, “Identifier Case Sensitivity”</a>.
      </p></li><li class="listitem"><p>
        If you often get corrupted tables, you should try to find out
        when and why this happens. In this case, the error log in the
        MySQL data directory may contain some information about what
        happened. (This is the file with the <code class="filename">.err</code>
        suffix in the name.) See <a class="xref" href="server-administration.html#error-log" title="5.4.2 The Error Log">Section 5.4.2, “The Error Log”</a>. Please
        include any relevant information from this file in your bug
        report. Normally <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> should
        <span class="emphasis"><em>never</em></span> crash a table if nothing killed it in
        the middle of an update. If you can find the cause of
        <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> dying, it is much easier for us to
        provide you with a fix for the problem. See
        <a class="xref" href="error-handling.html#what-is-crashing" title="B.5.1 How to Determine What Is Causing a Problem">Section B.5.1, “How to Determine What Is Causing a Problem”</a>.
      </p></li><li class="listitem"><p>
        If possible, download and install the most recent version of
        MySQL Server and check whether it solves your problem. All
        versions of the MySQL software are thoroughly tested and should
        work without problems. We believe in making everything as
        backward-compatible as possible, and you should be able to
        switch MySQL versions without difficulty. See
        <a class="xref" href="installing.html#which-version" title="2.1.1 Which MySQL Version and Distribution to Install">Section 2.1.1, “Which MySQL Version and Distribution to Install”</a>.
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="compatibility"></a>1.8 MySQL Standards Compliance</h2>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#extensions-to-ansi">1.8.1 MySQL Extensions to Standard SQL</a></span></dt><dt><span class="section"><a href="introduction.html#differences-from-ansi">1.8.2 MySQL Differences from Standard SQL</a></span></dt><dt><span class="section"><a href="introduction.html#constraints">1.8.3 How MySQL Deals with Constraints</a></span></dt></dl>
</div>
<a class="indexterm" name="idm139684846241872"></a><a class="indexterm" name="idm139684846240416"></a><a class="indexterm" name="idm139684846239344"></a><a class="indexterm" name="idm139684846237856"></a><a class="indexterm" name="idm139684846236368"></a><p>
      This section describes how MySQL relates to the ANSI/ISO SQL
      standards. MySQL Server has many extensions to the SQL standard,
      and here you can find out what they are and how to use them. You
      can also find information about functionality missing from MySQL
      Server, and how to work around some of the differences.
    </p><p>
      The SQL standard has been evolving since 1986 and several versions
      exist. In this manual, <span class="quote">“<span class="quote">SQL-92</span>”</span> refers to the
      standard released in 1992. <span class="quote">“<span class="quote">SQL:1999</span>”</span>,
      <span class="quote">“<span class="quote">SQL:2003</span>”</span>, <span class="quote">“<span class="quote">SQL:2008</span>”</span>, and
      <span class="quote">“<span class="quote">SQL:2011</span>”</span> refer to the versions of the standard
      released in the corresponding years, with the last being the most
      recent version. We use the phrase <span class="quote">“<span class="quote">the SQL standard</span>”</span>
      or <span class="quote">“<span class="quote">standard SQL</span>”</span> to mean the current version of the
      SQL Standard at any time.
    </p><p>
      One of our main goals with the product is to continue to work
      toward compliance with the SQL standard, but without sacrificing
      speed or reliability. We are not afraid to add extensions to SQL
      or support for non-SQL features if this greatly increases the
      usability of MySQL Server for a large segment of our user base.
      The <a class="link" href="sql-syntax.html#handler" title="13.2.4 HANDLER Syntax"><code class="literal">HANDLER</code></a> interface is an example
      of this strategy. See <a class="xref" href="sql-syntax.html#handler" title="13.2.4 HANDLER Syntax">Section 13.2.4, “HANDLER Syntax”</a>.
    </p><p>
      We continue to support transactional and nontransactional
      databases to satisfy both mission-critical 24/7 usage and heavy
      Web or logging usage.
    </p><p>
      MySQL Server was originally designed to work with medium-sized
      databases (10-100 million rows, or about 100MB per table) on small
      computer systems. Today MySQL Server handles terabyte-sized
      databases, but the code can also be compiled in a reduced version
      suitable for hand-held and embedded devices. The compact design of
      the MySQL server makes development in both directions possible
      without any conflicts in the source tree.
    </p><p>
      We are not targeting real-time support, although MySQL replication
      capabilities offer significant functionality.
    </p><p>
      MySQL supports ODBC levels 0 to 3.51.
    </p><p>
      MySQL supports high-availability database clustering using the
      <a class="link" href="mysql-cluster.html" title="Chapter 21 MySQL NDB Cluster 7.5 and NDB Cluster 7.6"><code class="literal">NDBCLUSTER</code></a> storage engine. See
      <a class="xref" href="mysql-cluster.html" title="Chapter 21 MySQL NDB Cluster 7.5 and NDB Cluster 7.6">Chapter 21, <i>MySQL NDB Cluster 7.5 and NDB Cluster 7.6</i></a>.
    </p><p>
      We implement XML functionality which supports most of the W3C
      XPath standard. See <a class="xref" href="functions.html#xml-functions" title="12.11 XML Functions">Section 12.11, “XML Functions”</a>.
    </p><p>
      MySQL (5.7.8 and later) supports a native JSON data type as
      defined by RFC 7159, and based on the ECMAScript standard
      (ECMA-262). See <a class="xref" href="data-types.html#json" title="11.6 The JSON Data Type">Section 11.6, “The JSON Data Type”</a>. MySQL also implements a
      subset of the SQL/JSON functions specified by a pre-publication
      draft of the SQL:2016 standard; see
      <a class="xref" href="functions.html#json-functions" title="12.16 JSON Functions">Section 12.16, “JSON Functions”</a>, for more information.
</p>
<h3><a name="idm139684846219200"></a>Selecting SQL Modes</h3>
<p>
      The MySQL server can operate in different SQL modes, and can apply
      these modes differently for different clients, depending on the
      value of the <a class="link" href="server-administration.html#sysvar_sql_mode"><code class="literal">sql_mode</code></a> system
      variable. DBAs can set the global SQL mode to match site server
      operating requirements, and each application can set its session
      SQL mode to its own requirements.
    </p><p>
      Modes affect the SQL syntax MySQL supports and the data validation
      checks it performs. This makes it easier to use MySQL in different
      environments and to use MySQL together with other database
      servers.
    </p><p>
      For more information on setting the SQL mode, see
      <a class="xref" href="server-administration.html#sql-mode" title="5.1.10 Server SQL Modes">Section 5.1.10, “Server SQL Modes”</a>.
</p>
<h3><a name="idm139684846214640"></a>Running MySQL in ANSI Mode</h3>
<a class="indexterm" name="idm139684846213920"></a><a class="indexterm" name="idm139684846212432"></a><p>
      To run MySQL Server in ANSI mode, start <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a>
      with the <a class="link" href="server-administration.html#option_mysqld_ansi"><code class="option">--ansi</code></a> option. Running the
      server in ANSI mode is the same as starting it with the following
      options:
    </p><pre data-lang="terminal" class="programlisting">
--transaction-isolation=SERIALIZABLE --sql-mode=ANSI
</pre><p>
      To achieve the same effect at runtime, execute these two
      statements:
    </p><pre data-lang="sql" class="programlisting">
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'ANSI';
</pre><p>
      You can see that setting the
      <a class="link" href="server-administration.html#sysvar_sql_mode"><code class="literal">sql_mode</code></a> system variable to
      <code class="literal">'ANSI'</code> enables all SQL mode options that are
      relevant for ANSI mode as follows:
    </p><pre data-lang="sql" class="programlisting">
mysql&gt; <strong class="userinput"><code>SET GLOBAL sql_mode='ANSI';</code></strong>
mysql&gt; <strong class="userinput"><code>SELECT @@global.sql_mode;</code></strong>
        -&gt; 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI'
</pre><p>
      Running the server in ANSI mode with
      <a class="link" href="server-administration.html#option_mysqld_ansi"><code class="option">--ansi</code></a> is not quite the same as
      setting the SQL mode to <code class="literal">'ANSI'</code> because the
      <a class="link" href="server-administration.html#option_mysqld_ansi"><code class="option">--ansi</code></a> option also sets the
      transaction isolation level.
    </p><p>
      See <a class="xref" href="server-administration.html#server-options" title="5.1.6 Server Command Options">Section 5.1.6, “Server Command Options”</a>.
</p>
<div class="section">

<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="extensions-to-ansi"></a>1.8.1 MySQL Extensions to Standard SQL</h3>
</div>
</div>
</div>
<a class="indexterm" name="idm139684846194944"></a><a class="indexterm" name="idm139684846193488"></a><p>
        MySQL Server supports some extensions that you probably will not
        find in other SQL DBMSs. Be warned that if you use them, your
        code will not be portable to other SQL servers. In some cases,
        you can write code that includes MySQL extensions, but is still
        portable, by using comments of the following form:
      </p><pre data-lang="sql" class="programlisting">
/*! <em class="replaceable"><code>MySQL-specific code</code></em> */
</pre><p>
        In this case, MySQL Server parses and executes the code within
        the comment as it would any other SQL statement, but other SQL
        servers will ignore the extensions. For example, MySQL Server
        recognizes the <code class="literal">STRAIGHT_JOIN</code> keyword in the
        following statement, but other servers will not:
      </p><pre data-lang="sql" class="programlisting">
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
</pre><p>
        If you add a version number after the <code class="literal">!</code>
        character, the syntax within the comment is executed only if the
        MySQL version is greater than or equal to the specified version
        number. The <code class="literal">KEY_BLOCK_SIZE</code> clause in the
        following comment is executed only by servers from MySQL 5.1.10
        or higher:
      </p><pre data-lang="sql" class="programlisting">
CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;
</pre><p>
        The following descriptions list MySQL extensions, organized by
        category.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Organization of data on disk
          </p><p>
            MySQL Server maps each database to a directory under the
            MySQL data directory, and maps tables within a database to
            file names in the database directory. This has a few
            implications:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                <a class="indexterm" name="idm139684846181952"></a>

                <a class="indexterm" name="idm139684846180464"></a>

                <a class="indexterm" name="idm139684846178976"></a>

                <a class="indexterm" name="idm139684846177488"></a>

                Database and table names are case-sensitive in MySQL
                Server on operating systems that have case-sensitive
                file names (such as most Unix systems). See
                <a class="xref" href="language-structure.html#identifier-case-sensitivity" title="9.2.2 Identifier Case Sensitivity">Section 9.2.2, “Identifier Case Sensitivity”</a>.
              </p></li><li class="listitem"><p>
                You can use standard system commands to back up, rename,
                move, delete, and copy tables that are managed by the
                <code class="literal">MyISAM</code> storage engine. For example,
                it is possible to rename a <code class="literal">MyISAM</code>
                table by renaming the <code class="filename">.MYD</code>,
                <code class="filename">.MYI</code>, and <code class="filename">.frm</code>
                files to which the table corresponds. (Nevertheless, it
                is preferable to use <a class="link" href="sql-syntax.html#rename-table" title="13.1.33 RENAME TABLE Syntax"><code class="literal">RENAME
                TABLE</code></a> or <code class="literal">ALTER TABLE ...
                RENAME</code> and let the server rename the files.)
</p></li></ul>
</div>
</li><li class="listitem"><p>
            General language syntax
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                By default, strings can be enclosed by
                <code class="literal">"</code> as well as <code class="literal">'</code>. If
                the <a class="link" href="server-administration.html#sqlmode_ansi_quotes"><code class="literal">ANSI_QUOTES</code></a> SQL
                mode is enabled, strings can be enclosed only by
                <code class="literal">'</code> and the server interprets strings
                enclosed by <code class="literal">"</code> as identifiers.
              </p></li><li class="listitem"><p>
                <code class="literal">\</code> is the escape character in strings.
              </p></li><li class="listitem"><p>
                In SQL statements, you can access tables from different
                databases with the
                <em class="replaceable"><code>db_name.tbl_name</code></em> syntax. Some
                SQL servers provide the same functionality but call this
                <code class="literal">User space</code>. MySQL Server doesn't
                support tablespaces such as used in statements like
                this: <code class="literal">CREATE TABLE ralph.my_table ... IN
                my_tablespace</code>.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            SQL statement syntax
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <a class="link" href="sql-syntax.html#analyze-table" title="13.7.2.1 ANALYZE TABLE Syntax"><code class="literal">ANALYZE TABLE</code></a>,
                <a class="link" href="sql-syntax.html#check-table" title="13.7.2.2 CHECK TABLE Syntax"><code class="literal">CHECK TABLE</code></a>,
                <a class="link" href="sql-syntax.html#optimize-table" title="13.7.2.4 OPTIMIZE TABLE Syntax"><code class="literal">OPTIMIZE TABLE</code></a>, and
                <a class="link" href="sql-syntax.html#repair-table" title="13.7.2.5 REPAIR TABLE Syntax"><code class="literal">REPAIR TABLE</code></a> statements.
              </p></li><li class="listitem"><p>
                The <a class="link" href="sql-syntax.html#create-database" title="13.1.11 CREATE DATABASE Syntax"><code class="literal">CREATE DATABASE</code></a>,
                <a class="link" href="sql-syntax.html#drop-database" title="13.1.22 DROP DATABASE Syntax"><code class="literal">DROP DATABASE</code></a>, and
                <a class="link" href="sql-syntax.html#alter-database" title="13.1.1 ALTER DATABASE Syntax"><code class="literal">ALTER DATABASE</code></a>
                statements. See <a class="xref" href="sql-syntax.html#create-database" title="13.1.11 CREATE DATABASE Syntax">Section 13.1.11, “CREATE DATABASE Syntax”</a>,
                <a class="xref" href="sql-syntax.html#drop-database" title="13.1.22 DROP DATABASE Syntax">Section 13.1.22, “DROP DATABASE Syntax”</a>, and
                <a class="xref" href="sql-syntax.html#alter-database" title="13.1.1 ALTER DATABASE Syntax">Section 13.1.1, “ALTER DATABASE Syntax”</a>.
              </p></li><li class="listitem"><p>
                The <a class="link" href="sql-syntax.html#do" title="13.2.3 DO Syntax"><code class="literal">DO</code></a> statement.
              </p></li><li class="listitem"><p>
                <a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN Syntax"><code class="literal">EXPLAIN
                SELECT</code></a> to obtain a description of how tables
                are processed by the query optimizer.
              </p></li><li class="listitem"><p>
                The <a class="link" href="sql-syntax.html#flush" title="13.7.6.3 FLUSH Syntax"><code class="literal">FLUSH</code></a> and
                <a class="link" href="sql-syntax.html#reset" title="13.7.6.6 RESET Syntax"><code class="literal">RESET</code></a> statements.
              </p></li><li class="listitem"><p>
                The
                <a class="link" href="sql-syntax.html#set-variable" title="13.7.4.1 SET Syntax for Variable Assignment"><code class="literal">SET</code></a>
                statement. See <a class="xref" href="sql-syntax.html#set-variable" title="13.7.4.1 SET Syntax for Variable Assignment">Section 13.7.4.1, “SET Syntax for Variable Assignment”</a>.
              </p></li><li class="listitem"><p>
                The <a class="link" href="sql-syntax.html#show" title="13.7.5 SHOW Syntax"><code class="literal">SHOW</code></a> statement. See
                <a class="xref" href="sql-syntax.html#show" title="13.7.5 SHOW Syntax">Section 13.7.5, “SHOW Syntax”</a>. The information produced by many
                of the MySQL-specific
                <a class="link" href="sql-syntax.html#show" title="13.7.5 SHOW Syntax"><code class="literal">SHOW</code></a> statements can be
                obtained in more standard fashion by using
                <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> to query
                <code class="literal">INFORMATION_SCHEMA</code>. See
                <a class="xref" href="information-schema.html" title="Chapter 24 INFORMATION_SCHEMA Tables">Chapter 24, <i>INFORMATION_SCHEMA Tables</i></a>.
              </p></li><li class="listitem"><p>
                <a class="indexterm" name="idm139684846125424"></a>

                <a class="indexterm" name="idm139684846124352"></a>

                Use of <a class="link" href="sql-syntax.html#load-data" title="13.2.6 LOAD DATA INFILE Syntax"><code class="literal">LOAD
                DATA INFILE</code></a>. In many cases, this syntax is
                compatible with Oracle's
                <a class="link" href="sql-syntax.html#load-data" title="13.2.6 LOAD DATA INFILE Syntax"><code class="literal">LOAD DATA
                INFILE</code></a>. See <a class="xref" href="sql-syntax.html#load-data" title="13.2.6 LOAD DATA INFILE Syntax">Section 13.2.6, “LOAD DATA INFILE Syntax”</a>.
              </p></li><li class="listitem"><p>
                Use of <a class="link" href="sql-syntax.html#rename-table" title="13.1.33 RENAME TABLE Syntax"><code class="literal">RENAME TABLE</code></a>. See
                <a class="xref" href="sql-syntax.html#rename-table" title="13.1.33 RENAME TABLE Syntax">Section 13.1.33, “RENAME TABLE Syntax”</a>.
              </p></li><li class="listitem"><p>
                Use of <a class="link" href="sql-syntax.html#replace" title="13.2.8 REPLACE Syntax"><code class="literal">REPLACE</code></a> instead of
                <a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE Syntax"><code class="literal">DELETE</code></a> plus
                <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a>. See
                <a class="xref" href="sql-syntax.html#replace" title="13.2.8 REPLACE Syntax">Section 13.2.8, “REPLACE Syntax”</a>.
              </p></li><li class="listitem"><p>
                Use of <code class="literal">CHANGE
                <em class="replaceable"><code>col_name</code></em></code>,
                <code class="literal">DROP
                <em class="replaceable"><code>col_name</code></em></code>, or
                <a class="link" href="sql-syntax.html#drop-index" title="13.1.25 DROP INDEX Syntax"><code class="literal">DROP INDEX</code></a>,
                <code class="literal">IGNORE</code> or <code class="literal">RENAME</code>
                in <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a>
                statements. Use of multiple <code class="literal">ADD</code>,
                <code class="literal">ALTER</code>, <code class="literal">DROP</code>, or
                <code class="literal">CHANGE</code> clauses in an
                <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a> statement.
                See <a class="xref" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax">Section 13.1.8, “ALTER TABLE Syntax”</a>.
              </p></li><li class="listitem"><p>
                Use of index names, indexes on a prefix of a column, and
                use of <code class="literal">INDEX</code> or
                <code class="literal">KEY</code> in <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE
                TABLE</code></a> statements. See
                <a class="xref" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax">Section 13.1.18, “CREATE TABLE Syntax”</a>.
              </p></li><li class="listitem"><p>
                Use of <code class="literal">TEMPORARY</code> or <code class="literal">IF NOT
                EXISTS</code> with <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE
                TABLE</code></a>.
              </p></li><li class="listitem"><p>
                Use of <code class="literal">IF EXISTS</code> with
                <a class="link" href="sql-syntax.html#drop-table" title="13.1.29 DROP TABLE Syntax"><code class="literal">DROP TABLE</code></a> and
                <a class="link" href="sql-syntax.html#drop-database" title="13.1.22 DROP DATABASE Syntax"><code class="literal">DROP DATABASE</code></a>.
              </p></li><li class="listitem"><p>
                The capability of dropping multiple tables with a single
                <a class="link" href="sql-syntax.html#drop-table" title="13.1.29 DROP TABLE Syntax"><code class="literal">DROP TABLE</code></a> statement.
              </p></li><li class="listitem"><p>
                The <code class="literal">ORDER BY</code> and
                <code class="literal">LIMIT</code> clauses of the
                <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a> and
                <a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE Syntax"><code class="literal">DELETE</code></a> statements.
              </p></li><li class="listitem"><p>
                <code class="literal">INSERT INTO <em class="replaceable"><code>tbl_name</code></em>
                SET <em class="replaceable"><code>col_name</code></em> = ...</code>
                syntax.
              </p></li><li class="listitem"><p>
                The <code class="literal">DELAYED</code> clause of the
                <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a> and
                <a class="link" href="sql-syntax.html#replace" title="13.2.8 REPLACE Syntax"><code class="literal">REPLACE</code></a> statements.
              </p></li><li class="listitem"><p>
                The <code class="literal">LOW_PRIORITY</code> clause of the
                <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a>,
                <a class="link" href="sql-syntax.html#replace" title="13.2.8 REPLACE Syntax"><code class="literal">REPLACE</code></a>,
                <a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE Syntax"><code class="literal">DELETE</code></a>, and
                <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a> statements.
              </p></li><li class="listitem"><p>
                Use of <code class="literal">INTO OUTFILE</code> or <code class="literal">INTO
                DUMPFILE</code> in
                <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> statements. See
                <a class="xref" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax">Section 13.2.9, “SELECT Syntax”</a>.
              </p></li><li class="listitem"><p>
                Options such as <code class="literal">STRAIGHT_JOIN</code> or
                <code class="literal">SQL_SMALL_RESULT</code> in
                <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> statements.
              </p></li><li class="listitem"><p>
                You don't need to name all selected columns in the
                <code class="literal">GROUP BY</code> clause. This gives better
                performance for some very specific, but quite normal
                queries. See
                <a class="xref" href="functions.html#group-by-functions-and-modifiers" title="12.19 Aggregate (GROUP BY) Functions">Section 12.19, “Aggregate (GROUP BY) Functions”</a>.
              </p></li><li class="listitem"><p>
                You can specify <code class="literal">ASC</code> and
                <code class="literal">DESC</code> with <code class="literal">GROUP
                BY</code>, not just with <code class="literal">ORDER BY</code>.
              </p></li><li class="listitem"><p>
                The ability to set variables in a statement with the
                <code class="literal">:=</code> assignment operator. See
                <a class="xref" href="language-structure.html#user-variables" title="9.4 User-Defined Variables">Section 9.4, “User-Defined Variables”</a>.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            Data types
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                The <a class="link" href="data-types.html#integer-types" title="11.2.1 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT"><code class="literal">MEDIUMINT</code></a>,
                <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a>, and
                <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a> data types, and the
                various <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">BLOB</code></a> and
                <a class="link" href="data-types.html#blob" title="11.4.3 The BLOB and TEXT Types"><code class="literal">TEXT</code></a> data types.
              </p></li><li class="listitem"><p>
                The <code class="literal">AUTO_INCREMENT</code>,
                <code class="literal">BINARY</code>, <code class="literal">NULL</code>,
                <code class="literal">UNSIGNED</code>, and
                <code class="literal">ZEROFILL</code> data type attributes.
</p></li></ul>
</div>
</li><li class="listitem"><p>
            Functions and operators
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>
                To make it easier for users who migrate from other SQL
                environments, MySQL Server supports aliases for many
                functions. For example, all string functions support
                both standard SQL syntax and ODBC syntax.
              </p></li><li class="listitem"><p>
                MySQL Server understands the
                <a class="link" href="functions.html#operator_or"><code class="literal">||</code></a> and
                <a class="link" href="functions.html#operator_and"><code class="literal">&amp;&amp;</code></a>
                operators to mean logical OR and AND, as in the C
                programming language. In MySQL Server,
                <a class="link" href="functions.html#operator_or"><code class="literal">||</code></a> and
                <a class="link" href="functions.html#operator_or"><code class="literal">OR</code></a> are
                synonyms, as are
                <a class="link" href="functions.html#operator_and"><code class="literal">&amp;&amp;</code></a>
                and <a class="link" href="functions.html#operator_and"><code class="literal">AND</code></a>.
                Because of this nice syntax, MySQL Server doesn't
                support the standard SQL
                <a class="link" href="functions.html#operator_or"><code class="literal">||</code></a> operator
                for string concatenation; use
                <a class="link" href="functions.html#function_concat"><code class="literal">CONCAT()</code></a> instead. Because
                <a class="link" href="functions.html#function_concat"><code class="literal">CONCAT()</code></a> takes any number
                of arguments, it is easy to convert use of the
                <a class="link" href="functions.html#operator_or"><code class="literal">||</code></a> operator
                to MySQL Server.
              </p></li><li class="listitem"><p>
                Use of <a class="link" href="functions.html#function_count"><code class="literal">COUNT(DISTINCT
                <em class="replaceable"><code>value_list</code></em>)</code></a> where
                <em class="replaceable"><code>value_list</code></em> has more than one
                element.
              </p></li><li class="listitem"><p>
                String comparisons are case insensitive by default, with
                sort ordering determined by the collation of the current
                character set, which is <code class="literal">latin1</code>
                (cp1252 West European) by default. To perform
                case-sensitive comparisons instead, you should declare
                your columns with the <code class="literal">BINARY</code>
                attribute or use the <code class="literal">BINARY</code> cast,
                which causes comparisons to be done using the underlying
                character code values rather than a lexical ordering.
              </p></li><li class="listitem"><p>
                <a class="indexterm" name="idm139684846016048"></a>

                <a class="indexterm" name="idm139684846014960"></a>

                The <a class="link" href="functions.html#function_mod"><code class="literal">%</code></a>
                operator is a synonym for
                <a class="link" href="functions.html#function_mod"><code class="literal">MOD()</code></a>. That is,
                <code class="literal"><em class="replaceable"><code>N</code></em> %
                <em class="replaceable"><code>M</code></em></code> is equivalent to
                <a class="link" href="functions.html#function_mod"><code class="literal">MOD(<em class="replaceable"><code>N</code></em>,<em class="replaceable"><code>M</code></em>)</code></a>.
                <a class="link" href="functions.html#function_mod"><code class="literal">%</code></a> is
                supported for C programmers and for compatibility with
                PostgreSQL.
              </p></li><li class="listitem"><p>
                The <a class="link" href="functions.html#operator_equal"><code class="literal">=</code></a>,
                <a class="link" href="functions.html#operator_not-equal"><code class="literal">&lt;&gt;</code></a>,
                <a class="link" href="functions.html#operator_less-than-or-equal"><code class="literal">&lt;=</code></a>,
                <a class="link" href="functions.html#operator_less-than"><code class="literal">&lt;</code></a>,
                <a class="link" href="functions.html#operator_greater-than-or-equal"><code class="literal">&gt;=</code></a>,
                <a class="link" href="functions.html#operator_greater-than"><code class="literal">&gt;</code></a>,
                <a class="link" href="functions.html#operator_left-shift"><code class="literal">&lt;&lt;</code></a>,
                <a class="link" href="functions.html#operator_right-shift"><code class="literal">&gt;&gt;</code></a>,
                <a class="link" href="functions.html#operator_equal-to"><code class="literal">&lt;=&gt;</code></a>,
                <a class="link" href="functions.html#operator_and"><code class="literal">AND</code></a>,
                <a class="link" href="functions.html#operator_or"><code class="literal">OR</code></a>, or
                <a class="link" href="functions.html#operator_like"><code class="literal">LIKE</code></a>
                operators may be used in expressions in the output
                column list (to the left of the <code class="literal">FROM</code>)
                in <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT</code></a> statements. For
                example:
              </p><pre data-lang="sql" class="programlisting">
mysql&gt; <strong class="userinput"><code>SELECT col1=1 AND col2=2 FROM my_table;</code></strong>
</pre></li><li class="listitem"><p>
                The <a class="link" href="functions.html#function_last-insert-id"><code class="literal">LAST_INSERT_ID()</code></a>
                function returns the most recent
                <code class="literal">AUTO_INCREMENT</code> value. See
                <a class="xref" href="functions.html#information-functions" title="12.14 Information Functions">Section 12.14, “Information Functions”</a>.
              </p></li><li class="listitem"><p>
                <a class="link" href="functions.html#operator_like"><code class="literal">LIKE</code></a> is permitted on
                numeric values.
              </p></li><li class="listitem"><p>
                The <a class="link" href="functions.html#operator_regexp"><code class="literal">REGEXP</code></a> and
                <a class="link" href="functions.html#operator_not-regexp"><code class="literal">NOT REGEXP</code></a> extended regular
                expression operators.
              </p></li><li class="listitem"><p>
                <a class="link" href="functions.html#function_concat"><code class="literal">CONCAT()</code></a> or
                <a class="link" href="functions.html#function_char"><code class="literal">CHAR()</code></a> with one argument
                or more than two arguments. (In MySQL Server, these
                functions can take a variable number of arguments.)
              </p></li><li class="listitem"><p>
                The <a class="link" href="functions.html#function_bit-count"><code class="literal">BIT_COUNT()</code></a>,
                <a class="link" href="functions.html#operator_case"><code class="literal">CASE</code></a>,
                <a class="link" href="functions.html#function_elt"><code class="literal">ELT()</code></a>,
                <a class="link" href="functions.html#function_from-days"><code class="literal">FROM_DAYS()</code></a>,
                <a class="link" href="functions.html#function_format"><code class="literal">FORMAT()</code></a>,
                <a class="link" href="functions.html#function_if"><code class="literal">IF()</code></a>,
                <a class="link" href="functions.html#function_password"><code class="literal">PASSWORD()</code></a>,
                <a class="link" href="functions.html#function_encrypt"><code class="literal">ENCRYPT()</code></a>,
                <a class="link" href="functions.html#function_md5"><code class="literal">MD5()</code></a>,
                <a class="link" href="functions.html#function_encode"><code class="literal">ENCODE()</code></a>,
                <a class="link" href="functions.html#function_decode"><code class="literal">DECODE()</code></a>,
                <a class="link" href="functions.html#function_period-add"><code class="literal">PERIOD_ADD()</code></a>,
                <a class="link" href="functions.html#function_period-diff"><code class="literal">PERIOD_DIFF()</code></a>,
                <a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS()</code></a>, and
                <a class="link" href="functions.html#function_weekday"><code class="literal">WEEKDAY()</code></a> functions.
              </p></li><li class="listitem"><p>
                Use of <a class="link" href="functions.html#function_trim"><code class="literal">TRIM()</code></a> to trim
                substrings. Standard SQL supports removal of single
                characters only.
              </p></li><li class="listitem"><p>
                The <code class="literal">GROUP BY</code> functions
                <a class="link" href="functions.html#function_std"><code class="literal">STD()</code></a>,
                <a class="link" href="functions.html#function_bit-or"><code class="literal">BIT_OR()</code></a>,
                <a class="link" href="functions.html#function_bit-and"><code class="literal">BIT_AND()</code></a>,
                <a class="link" href="functions.html#function_bit-xor"><code class="literal">BIT_XOR()</code></a>, and
                <a class="link" href="functions.html#function_group-concat"><code class="literal">GROUP_CONCAT()</code></a>. See
                <a class="xref" href="functions.html#group-by-functions-and-modifiers" title="12.19 Aggregate (GROUP BY) Functions">Section 12.19, “Aggregate (GROUP BY) Functions”</a>.
</p></li></ul>
</div>
</li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="differences-from-ansi"></a>1.8.2 MySQL Differences from Standard SQL</h3>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#ansi-diff-select-into-table">1.8.2.1 SELECT INTO TABLE Differences</a></span></dt><dt><span class="section"><a href="introduction.html#ansi-diff-update">1.8.2.2 UPDATE Differences</a></span></dt><dt><span class="section"><a href="introduction.html#ansi-diff-foreign-keys">1.8.2.3 Foreign Key Differences</a></span></dt><dt><span class="section"><a href="introduction.html#ansi-diff-comments">1.8.2.4 '--' as the Start of a Comment</a></span></dt></dl>
</div>
<a class="indexterm" name="idm139684845938112"></a><p>
        We try to make MySQL Server follow the ANSI SQL standard and the
        ODBC SQL standard, but MySQL Server performs operations
        differently in some cases:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            There are several differences between the MySQL and standard
            SQL privilege systems. For example, in MySQL, privileges for
            a table are not automatically revoked when you delete a
            table. You must explicitly issue a
            <a class="link" href="sql-syntax.html#revoke" title="13.7.1.6 REVOKE Syntax"><code class="literal">REVOKE</code></a> statement to revoke
            privileges for a table. For more information, see
            <a class="xref" href="sql-syntax.html#revoke" title="13.7.1.6 REVOKE Syntax">Section 13.7.1.6, “REVOKE Syntax”</a>.
          </p></li><li class="listitem"><p>
            The <a class="link" href="functions.html#function_cast"><code class="literal">CAST()</code></a> function does not
            support cast to <a class="link" href="data-types.html#floating-point-types" title="11.2.3 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE"><code class="literal">REAL</code></a> or
            <a class="link" href="data-types.html#integer-types" title="11.2.1 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT"><code class="literal">BIGINT</code></a>. See
            <a class="xref" href="functions.html#cast-functions" title="12.10 Cast Functions and Operators">Section 12.10, “Cast Functions and Operators”</a>.
</p></li></ul>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="ansi-diff-select-into-table"></a>1.8.2.1 SELECT INTO TABLE Differences</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845926000"></a><p>
          MySQL Server doesn't support the <code class="literal">SELECT ... INTO
          TABLE</code> Sybase SQL extension. Instead, MySQL Server
          supports the
          <a class="link" href="sql-syntax.html#insert-select" title="13.2.5.1 INSERT ... SELECT Syntax"><code class="literal">INSERT INTO ...
          SELECT</code></a> standard SQL syntax, which is basically the
          same thing. See <a class="xref" href="sql-syntax.html#insert-select" title="13.2.5.1 INSERT ... SELECT Syntax">Section 13.2.5.1, “INSERT ... SELECT Syntax”</a>. For example:
        </p><pre data-lang="sql" class="programlisting">
INSERT INTO tbl_temp2 (fld_id)
    SELECT tbl_temp1.fld_order_id
    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id &gt; 100;
</pre><p>
          Alternatively, you can use
          <a class="link" href="sql-syntax.html#select-into" title="13.2.9.1 SELECT ... INTO Syntax"><code class="literal">SELECT ... INTO
          OUTFILE</code></a> or
          <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE TABLE ...
          SELECT</code></a>.
        </p><p>
          You can use <a class="link" href="sql-syntax.html#select" title="13.2.9 SELECT Syntax"><code class="literal">SELECT ...
          INTO</code></a> with user-defined variables. The same syntax
          can also be used inside stored routines using cursors and
          local variables. See <a class="xref" href="sql-syntax.html#select-into" title="13.2.9.1 SELECT ... INTO Syntax">Section 13.2.9.1, “SELECT ... INTO Syntax”</a>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="ansi-diff-update"></a>1.8.2.2 UPDATE Differences</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845913776"></a><p>
          If you access a column from the table to be updated in an
          expression, <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a> uses the
          current value of the column. The second assignment in the
          following statement sets <code class="literal">col2</code> to the
          current (updated) <code class="literal">col1</code> value, not the
          original <code class="literal">col1</code> value. The result is that
          <code class="literal">col1</code> and <code class="literal">col2</code> have the
          same value. This behavior differs from standard SQL.
        </p><pre data-lang="sql" class="programlisting">
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="ansi-diff-foreign-keys"></a>1.8.2.3 Foreign Key Differences</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845904992"></a><a class="indexterm" name="idm139684845903920"></a><p>
          The MySQL implementation of foreign keys differs from the SQL
          standard in the following key respects:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
              If there are several rows in the parent table that have
              the same referenced key value,
              <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a> acts in foreign key
              checks as if the other parent rows with the same key value
              do not exist. For example, if you have defined a
              <code class="literal">RESTRICT</code> type constraint, and there is
              a child row with several parent rows,
              <code class="literal">InnoDB</code> does not permit the deletion of
              any of those parent rows.
            </p><p>
              <code class="literal">InnoDB</code> performs cascading operations
              through a depth-first algorithm, based on records in the
              indexes corresponding to the foreign key constraints.
            </p></li><li class="listitem"><p>
              A <code class="literal">FOREIGN KEY</code> constraint that
              references a non-<code class="literal">UNIQUE</code> key is not
              standard SQL but rather an
              <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a> extension.
            </p></li><li class="listitem"><p>
              If <code class="literal">ON UPDATE CASCADE</code> or <code class="literal">ON
              UPDATE SET NULL</code> recurses to update the
              <span class="emphasis"><em>same table</em></span> it has previously updated
              during the same cascade, it acts like
              <code class="literal">RESTRICT</code>. This means that you cannot
              use self-referential <code class="literal">ON UPDATE CASCADE</code>
              or <code class="literal">ON UPDATE SET NULL</code> operations. This
              is to prevent infinite loops resulting from cascaded
              updates. A self-referential <code class="literal">ON DELETE SET
              NULL</code>, on the other hand, is possible, as is a
              self-referential <code class="literal">ON DELETE CASCADE</code>.
              Cascading operations may not be nested more than 15 levels
              deep.
            </p></li><li class="listitem"><p>
              In an SQL statement that inserts, deletes, or updates many
              rows, foreign key constraints (like unique constraints)
              are checked row-by-row. When performing foreign key
              checks, <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a> sets shared
              row-level locks on child or parent records that it must
              examine. MySQL checks foreign key constraints immediately;
              the check is not deferred to transaction commit. According
              to the SQL standard, the default behavior should be
              deferred checking. That is, constraints are only checked
              after the <span class="emphasis"><em>entire SQL statement</em></span> has
              been processed. This means that it is not possible to
              delete a row that refers to itself using a foreign key.
</p></li></ul>
</div>
<p>
          For information about how the
          <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a> storage engine handles
          foreign keys, see
          <a class="xref" href="innodb-storage-engine.html#innodb-foreign-key-constraints" title="14.8.1.6 InnoDB and FOREIGN KEY Constraints">Section 14.8.1.6, “InnoDB and FOREIGN KEY Constraints”</a>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="ansi-diff-comments"></a>1.8.2.4 '--' as the Start of a Comment</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845878976"></a><a class="indexterm" name="idm139684845877520"></a><p>
          Standard SQL uses the C syntax <code class="literal">/* this is a comment
          */</code> for comments, and MySQL Server supports this
          syntax as well. MySQL also support extensions to this syntax
          that enable MySQL-specific SQL to be embedded in the comment,
          as described in <a class="xref" href="language-structure.html#comments" title="9.6 Comment Syntax">Section 9.6, “Comment Syntax”</a>.
        </p><p>
          Standard SQL uses <span class="quote">“<span class="quote"><code class="option">--</code></span>”</span> as a
          start-comment sequence. MySQL Server uses <code class="literal">#</code>
          as the start comment character. MySQL Server also supports a
          variant of the <code class="literal">--</code> comment style. That is,
          the <code class="literal">--</code> start-comment sequence must be
          followed by a space (or by a control character such as a
          newline). The space is required to prevent problems with
          automatically generated SQL queries that use constructs such
          as the following, where we automatically insert the value of
          the payment for <code class="literal">payment</code>:
        </p><pre data-lang="sql" class="programlisting">
UPDATE account SET credit=credit-payment
</pre><p>
          Consider about what happens if <code class="literal">payment</code> has
          a negative value such as <code class="literal">-1</code>:
        </p><pre data-lang="sql" class="programlisting">
UPDATE account SET credit=credit--1
</pre><p>
          <code class="literal">credit--1</code> is a valid expression in SQL, but
          <code class="literal">--</code> is interpreted as the start of a
          comment, part of the expression is discarded. The result is a
          statement that has a completely different meaning than
          intended:
        </p><pre data-lang="sql" class="programlisting">
UPDATE account SET credit=credit
</pre><p>
          The statement produces no change in value at all. This
          illustrates that permitting comments to start with
          <code class="literal">--</code> can have serious consequences.
        </p><p>
          Using our implementation requires a space following the
          <code class="literal">--</code> for it to be recognized as a
          start-comment sequence in MySQL Server. Therefore,
          <code class="literal">credit--1</code> is safe to use.
        </p><p>
          Another safe feature is that the <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a>
          command-line client ignores lines that start with
          <code class="literal">--</code>.
</p>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="constraints"></a>1.8.3 How MySQL Deals with Constraints</h3>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#constraint-primary-key">1.8.3.1 PRIMARY KEY and UNIQUE Index Constraints</a></span></dt><dt><span class="section"><a href="introduction.html#constraint-foreign-key">1.8.3.2 FOREIGN KEY Constraints</a></span></dt><dt><span class="section"><a href="introduction.html#constraint-invalid-data">1.8.3.3 Constraints on Invalid Data</a></span></dt><dt><span class="section"><a href="introduction.html#constraint-enum">1.8.3.4 ENUM and SET Constraints</a></span></dt></dl>
</div>
<a class="indexterm" name="idm139684845855744"></a><p>
        MySQL enables you to work both with transactional tables that
        permit rollback and with nontransactional tables that do not.
        Because of this, constraint handling is a bit different in MySQL
        than in other DBMSs. We must handle the case when you have
        inserted or updated a lot of rows in a nontransactional table
        for which changes cannot be rolled back when an error occurs.
      </p><p>
        The basic philosophy is that MySQL Server tries to produce an
        error for anything that it can detect while parsing a statement
        to be executed, and tries to recover from any errors that occur
        while executing the statement. We do this in most cases, but not
        yet for all.
      </p><p>
        The options MySQL has when an error occurs are to stop the
        statement in the middle or to recover as well as possible from
        the problem and continue. By default, the server follows the
        latter course. This means, for example, that the server may
        coerce invalid values to the closest valid values.
      </p><p>
        Several SQL mode options are available to provide greater
        control over handling of bad data values and whether to continue
        statement execution or abort when errors occur. Using these
        options, you can configure MySQL Server to act in a more
        traditional fashion that is like other DBMSs that reject
        improper input. The SQL mode can be set globally at server
        startup to affect all clients. Individual clients can set the
        SQL mode at runtime, which enables each client to select the
        behavior most appropriate for its requirements. See
        <a class="xref" href="server-administration.html#sql-mode" title="5.1.10 Server SQL Modes">Section 5.1.10, “Server SQL Modes”</a>.
      </p><p>
        The following sections describe how MySQL Server handles
        different types of constraints.
</p>
<div class="section">

<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="constraint-primary-key"></a>1.8.3.1 PRIMARY KEY and UNIQUE Index Constraints</h4>
</div>
</div>
</div>
<a class="indexterm" name="idm139684845849072"></a><a class="indexterm" name="idm139684845847616"></a><a class="indexterm" name="idm139684845846128"></a><p>
          Normally, errors occur for data-change statements (such as
          <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a> or
          <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a>) that would violate
          primary-key, unique-key, or foreign-key constraints. If you
          are using a transactional storage engine such as
          <code class="literal">InnoDB</code>, MySQL automatically rolls back the
          statement. If you are using a nontransactional storage engine,
          MySQL stops processing the statement at the row for which the
          error occurred and leaves any remaining rows unprocessed.
        </p><p>
          MySQL supports an <code class="literal">IGNORE</code> keyword for
          <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a>,
          <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a>, and so forth. If you
          use it, MySQL ignores primary-key or unique-key violations and
          continues processing with the next row. See the section for
          the statement that you are using (<a class="xref" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax">Section 13.2.5, “INSERT Syntax”</a>,
          <a class="xref" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax">Section 13.2.11, “UPDATE Syntax”</a>, and so forth).
        </p><p>
          You can get information about the number of rows actually
          inserted or updated with the
          <a class="link" href="connectors-apis.html#mysql-info" title="27.8.7.36 mysql_info()"><code class="literal">mysql_info()</code></a> C API function.
          You can also use the <a class="link" href="sql-syntax.html#show-warnings" title="13.7.5.40 SHOW WARNINGS Syntax"><code class="literal">SHOW
          WARNINGS</code></a> statement. See
          <a class="xref" href="connectors-apis.html#mysql-info" title="27.8.7.36 mysql_info()">Section 27.8.7.36, “mysql_info()”</a>, and
          <a class="xref" href="sql-syntax.html#show-warnings" title="13.7.5.40 SHOW WARNINGS Syntax">Section 13.7.5.40, “SHOW WARNINGS Syntax”</a>.
        </p><p>
          <code class="literal">InnoDB</code> and <code class="literal">NDB</code> tables
          support foreign keys. See
          <a class="xref" href="introduction.html#constraint-foreign-key" title="1.8.3.2 FOREIGN KEY Constraints">Section 1.8.3.2, “FOREIGN KEY Constraints”</a>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="constraint-foreign-key"></a>1.8.3.2 FOREIGN KEY Constraints</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845826864"></a><p>
          Foreign keys let you cross-reference related data across
          tables, and
          <a class="link" href="glossary.html#glos_foreign_key_constraint" title="FOREIGN KEY constraint">foreign key
          constraints</a> help keep this spread-out data consistent.
        </p><p>
          MySQL supports <code class="literal">ON UPDATE</code> and <code class="literal">ON
          DELETE</code> foreign key references in
          <a class="link" href="sql-syntax.html#create-table" title="13.1.18 CREATE TABLE Syntax"><code class="literal">CREATE TABLE</code></a> and
          <a class="link" href="sql-syntax.html#alter-table" title="13.1.8 ALTER TABLE Syntax"><code class="literal">ALTER TABLE</code></a> statements. The
          available referential actions are <code class="literal">RESTRICT</code>
          (the default), <code class="literal">CASCADE</code>, <code class="literal">SET
          NULL</code>, and <code class="literal">NO ACTION</code>.
        </p><p>
          <code class="literal">SET DEFAULT</code> is also supported by the MySQL
          Server but is currently rejected as invalid by
          <a class="link" href="innodb-storage-engine.html" title="Chapter 14 The InnoDB Storage Engine"><code class="literal">InnoDB</code></a>. Since MySQL does not
          support deferred constraint checking, <code class="literal">NO
          ACTION</code> is treated as <code class="literal">RESTRICT</code>.
          For the exact syntax supported by MySQL for foreign keys, see
          <a class="xref" href="sql-syntax.html#create-table-foreign-keys" title="13.1.18.6 Using FOREIGN KEY Constraints">Section 13.1.18.6, “Using FOREIGN KEY Constraints”</a>.
        </p><p>
          <code class="literal">MATCH FULL</code>, <code class="literal">MATCH
          PARTIAL</code>, and <code class="literal">MATCH SIMPLE</code> are
          allowed, but their use should be avoided, as they cause the
          MySQL Server to ignore any <code class="literal">ON DELETE</code> or
          <code class="literal">ON UPDATE</code> clause used in the same
          statement. <code class="literal">MATCH</code> options do not have any
          other effect in MySQL, which in effect enforces <code class="literal">MATCH
          SIMPLE</code> semantics full-time.
        </p><p>
          MySQL requires that foreign key columns be indexed; if you
          create a table with a foreign key constraint but no index on a
          given column, an index is created.
        </p><p>
          You can obtain information about foreign keys from the
          <a class="link" href="information-schema.html#key-column-usage-table" title="24.12 The INFORMATION_SCHEMA KEY_COLUMN_USAGE Table"><code class="literal">INFORMATION_SCHEMA.KEY_COLUMN_USAGE</code></a>
          table. An example of a query against this table is shown here:
        </p><pre data-lang="sql" class="programlisting">
mysql&gt; <strong class="userinput"><code>SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME</code></strong>
     &gt; <strong class="userinput"><code>FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE</code></strong>
     &gt; <strong class="userinput"><code>WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;</code></strong>
+--------------+---------------+-------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME    | COLUMN_NAME | CONSTRAINT_NAME |
+--------------+---------------+-------------+-----------------+
| fk1          | myuser        | myuser_id   | f               |
| fk1          | product_order | customer_id | f2              |
| fk1          | product_order | product_id  | f1              |
+--------------+---------------+-------------+-----------------+
3 rows in set (0.01 sec)
</pre><p>
          Information about foreign keys on <code class="literal">InnoDB</code>
          tables can also be found in the
          <a class="link" href="information-schema.html#innodb-sys-foreign-table" title="24.32.19 The INFORMATION_SCHEMA INNODB_SYS_FOREIGN Table"><code class="literal">INNODB_SYS_FOREIGN</code></a> and
          <a class="link" href="information-schema.html#innodb-sys-foreign-cols-table" title="24.32.20 The INFORMATION_SCHEMA INNODB_SYS_FOREIGN_COLS Table"><code class="literal">INNODB_SYS_FOREIGN_COLS</code></a> tables,
          in the <code class="literal">INFORMATION_SCHEMA</code> database.
        </p><p>
          <code class="literal">InnoDB</code> and <code class="literal">NDB</code> tables
          support foreign keys. See
          <a class="xref" href="innodb-storage-engine.html#innodb-foreign-key-constraints" title="14.8.1.6 InnoDB and FOREIGN KEY Constraints">Section 14.8.1.6, “InnoDB and FOREIGN KEY Constraints”</a>, for
          information specific to foreign key support in
          <code class="literal">InnoDB</code>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="constraint-invalid-data"></a>1.8.3.3 Constraints on Invalid Data</h4>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845790448"></a><a class="indexterm" name="idm139684845788992"></a><a class="indexterm" name="idm139684845787504"></a><a class="indexterm" name="idm139684845786016"></a><a class="indexterm" name="idm139684845784528"></a><p>
          By default, MySQL is forgiving of invalid or improper data
          values and coerces them to valid values for data entry.
          However, you can enable strict SQL mode to select more
          traditional treatment of bad values such that the server
          rejects them and aborts the statement in which they occur. See
          <a class="xref" href="server-administration.html#sql-mode" title="5.1.10 Server SQL Modes">Section 5.1.10, “Server SQL Modes”</a>.
        </p><p>
          This section describes the default (forgiving) behavior of
          MySQL, as well as the strict SQL mode and how it differs.
        </p><p>
          If you are not using strict mode, then whenever you insert an
          <span class="quote">“<span class="quote">incorrect</span>”</span> value into a column, such as a
          <code class="literal">NULL</code> into a <code class="literal">NOT NULL</code>
          column or a too-large numeric value into a numeric column,
          MySQL sets the column to the <span class="quote">“<span class="quote">best possible
          value</span>”</span> instead of producing an error: The following
          rules describe in more detail how this works:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
              If you try to store an out of range value into a numeric
              column, MySQL Server instead stores zero, the smallest
              possible value, or the largest possible value, whichever
              is closest to the invalid value.
            </p></li><li class="listitem"><p>
              For strings, MySQL stores either the empty string or as
              much of the string as can be stored in the column.
            </p></li><li class="listitem"><p>
              If you try to store a string that does not start with a
              number into a numeric column, MySQL Server stores 0.
            </p></li><li class="listitem"><p>
              Invalid values for <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a> and
              <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a> columns are handled as
              described in <a class="xref" href="introduction.html#constraint-enum" title="1.8.3.4 ENUM and SET Constraints">Section 1.8.3.4, “ENUM and SET Constraints”</a>.
            </p></li><li class="listitem"><p>
              MySQL permits you to store certain incorrect date values
              into <a class="link" href="data-types.html#datetime" title="11.3.1 The DATE, DATETIME, and TIMESTAMP Types"><code class="literal">DATE</code></a> and
              <a class="link" href="data-types.html#datetime" title="11.3.1 The DATE, DATETIME, and TIMESTAMP Types"><code class="literal">DATETIME</code></a> columns (such as
              <code class="literal">'2000-02-31'</code> or
              <code class="literal">'2000-02-00'</code>). In this case, when an
              application has not enabled strict SQL mode, it up to the
              application to validate the dates before storing them. If
              MySQL can store a date value and retrieve exactly the same
              value, MySQL stores it as given. If the date is totally
              wrong (outside the server's ability to store it), the
              special <span class="quote">“<span class="quote">zero</span>”</span> date value
              <code class="literal">'0000-00-00'</code> is stored in the column
              instead.
            </p></li><li class="listitem"><p>
              If you try to store <code class="literal">NULL</code> into a column
              that doesn't take <code class="literal">NULL</code> values, an error
              occurs for single-row
              <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a> statements. For
              multiple-row <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a>
              statements or for
              <a class="link" href="sql-syntax.html#insert-select" title="13.2.5.1 INSERT ... SELECT Syntax"><code class="literal">INSERT INTO
              ... SELECT</code></a> statements, MySQL Server stores the
              implicit default value for the column data type. In
              general, this is <code class="literal">0</code> for numeric types,
              the empty string (<code class="literal">''</code>) for string types,
              and the <span class="quote">“<span class="quote">zero</span>”</span> value for date and time types.
              Implicit default values are discussed in
              <a class="xref" href="data-types.html#data-type-defaults" title="11.7 Data Type Default Values">Section 11.7, “Data Type Default Values”</a>.
            </p></li><li class="listitem"><p>
              If an <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a> statement
              specifies no value for a column, MySQL inserts its default
              value if the column definition includes an explicit
              <code class="literal">DEFAULT</code> clause. If the definition has
              no such <code class="literal">DEFAULT</code> clause, MySQL inserts
              the implicit default value for the column data type.
</p></li></ul>
</div>
<p>
          The reason for using the preceding rules in nonstrict mode is
          that we can't check these conditions until the statement has
          begun executing. We can't just roll back if we encounter a
          problem after updating a few rows, because the storage engine
          may not support rollback. The option of terminating the
          statement is not that good; in this case, the update would be
          <span class="quote">“<span class="quote">half done,</span>”</span> which is probably the worst possible
          scenario. In this case, it is better to <span class="quote">“<span class="quote">do the best you
          can</span>”</span> and then continue as if nothing happened.
        </p><p>
          You can select stricter treatment of input values by using the
          <a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a> or
          <a class="link" href="server-administration.html#sqlmode_strict_all_tables"><code class="literal">STRICT_ALL_TABLES</code></a> SQL modes:
        </p><pre data-lang="sql" class="programlisting">
SET sql_mode = 'STRICT_TRANS_TABLES';
SET sql_mode = 'STRICT_ALL_TABLES';
</pre><p>
          <a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a> enables
          strict mode for transactional storage engines, and also to
          some extent for nontransactional engines. It works like this:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
              For transactional storage engines, bad data values
              occurring anywhere in a statement cause the statement to
              abort and roll back.
            </p></li><li class="listitem"><p>
              For nontransactional storage engines, a statement aborts
              if the error occurs in the first row to be inserted or
              updated. (When the error occurs in the first row, the
              statement can be aborted to leave the table unchanged,
              just as for a transactional table.) Errors in rows after
              the first do not abort the statement, because the table
              has already been changed by the first row. Instead, bad
              data values are adjusted and result in warnings rather
              than errors. In other words, with
              <a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a>, a
              wrong value causes MySQL to roll back all updates done so
              far, if that can be done without changing the table. But
              once the table has been changed, further errors result in
              adjustments and warnings.
</p></li></ul>
</div>
<p>
          For even stricter checking, enable
          <a class="link" href="server-administration.html#sqlmode_strict_all_tables"><code class="literal">STRICT_ALL_TABLES</code></a>. This is
          the same as
          <a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a> except
          that for nontransactional storage engines, errors abort the
          statement even for bad data in rows following the first row.
          This means that if an error occurs partway through a
          multiple-row insert or update for a nontransactional table, a
          partial update results. Earlier rows are inserted or updated,
          but those from the point of the error on are not. To avoid
          this for nontransactional tables, either use single-row
          statements or else use
          <a class="link" href="server-administration.html#sqlmode_strict_trans_tables"><code class="literal">STRICT_TRANS_TABLES</code></a> if
          conversion warnings rather than errors are acceptable. To
          avoid problems in the first place, do not use MySQL to check
          column content. It is safest (and often faster) to let the
          application ensure that it passes only valid values to the
          database.
        </p><p>
          With either of the strict mode options, you can cause errors
          to be treated as warnings by using
          <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT
          IGNORE</code></a> or <code class="literal">UPDATE IGNORE</code> rather
          than <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT</code></a> or
          <a class="link" href="sql-syntax.html#update" title="13.2.11 UPDATE Syntax"><code class="literal">UPDATE</code></a> without
          <code class="literal">IGNORE</code>.
</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a name="constraint-enum"></a>1.8.3.4 ENUM and SET Constraints</h4>

</div>

</div>

</div>
<p>
          <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a> and
          <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a> columns provide an
          efficient way to define columns that can contain only a given
          set of values. See <a class="xref" href="data-types.html#enum" title="11.4.4 The ENUM Type">Section 11.4.4, “The ENUM Type”</a>, and
          <a class="xref" href="data-types.html#set" title="11.4.5 The SET Type">Section 11.4.5, “The SET Type”</a>.
        </p><p>
          With strict mode enabled (see <a class="xref" href="server-administration.html#sql-mode" title="5.1.10 Server SQL Modes">Section 5.1.10, “Server SQL Modes”</a>), the
          definition of a <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a> or
          <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a> column acts as a constraint
          on values entered into the column. An error occurs for values
          that do not satisfy these conditions:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
              An <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a> value must be one
              of those listed in the column definition, or the internal
              numeric equivalent thereof. The value cannot be the error
              value (that is, 0 or the empty string). For a column
              defined as
              <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM('a','b','c')</code></a>, values
              such as <code class="literal">''</code>, <code class="literal">'d'</code>, or
              <code class="literal">'ax'</code> are invalid and are rejected.
            </p></li><li class="listitem"><p>
              A <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a> value must be the
              empty string or a value consisting only of the values
              listed in the column definition separated by commas. For a
              column defined as
              <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET('a','b','c')</code></a>, values
              such as <code class="literal">'d'</code> or
              <code class="literal">'a,b,c,d'</code> are invalid and are rejected.
</p></li></ul>
</div>
<p>
          Errors for invalid values can be suppressed in strict mode if
          you use <a class="link" href="sql-syntax.html#insert" title="13.2.5 INSERT Syntax"><code class="literal">INSERT
          IGNORE</code></a> or <code class="literal">UPDATE IGNORE</code>. In this
          case, a warning is generated rather than an error. For
          <a class="link" href="data-types.html#enum" title="11.4.4 The ENUM Type"><code class="literal">ENUM</code></a>, the value is inserted as
          the error member (<code class="literal">0</code>). For
          <a class="link" href="data-types.html#set" title="11.4.5 The SET Type"><code class="literal">SET</code></a>, the value is inserted as
          given except that any invalid substrings are deleted. For
          example, <code class="literal">'a,x,b,y'</code> results in a value of
          <code class="literal">'a,b'</code>.
</p>
</div>

</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="credits"></a>1.9 Credits</h2>

</div>

</div>

</div>
<div class="toc">
<dl class="toc"><dt><span class="section"><a href="introduction.html#contributors">1.9.1 Contributors to MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#documenters-translators">1.9.2 Documenters and translators</a></span></dt><dt><span class="section"><a href="introduction.html#packages">1.9.3 Packages that support MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#tools-used-to-create-mysql">1.9.4 Tools that were used to create MySQL</a></span></dt><dt><span class="section"><a href="introduction.html#supporters">1.9.5 Supporters of MySQL</a></span></dt></dl>
</div>
<p>
    The following sections list developers, contributors, and supporters
    that have helped to make MySQL what it is today.
</p>
<div class="section">

<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="contributors"></a>1.9.1 Contributors to MySQL</h3>
</div>
</div>
</div>
<a class="indexterm" name="idm139684845697552"></a><p>
      Although Oracle Corporation and/or its affiliates own all
      copyrights in the <code class="literal">MySQL server</code> and the
      <code class="literal">MySQL manual</code>, we wish to recognize those who
      have made contributions of one kind or another to the
      <code class="literal">MySQL distribution</code>. Contributors are listed
      here, in somewhat random order:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Gianmassimo Vigazzola <code class="email">&lt;<a class="email" href="mailto:qwerg@mbox.vol.it">qwerg@mbox.vol.it</a>&gt;</code> or
          <code class="email">&lt;<a class="email" href="mailto:qwerg@tin.it">qwerg@tin.it</a>&gt;</code>
        </p><p>
          The initial port to Win32/NT.
        </p></li><li class="listitem"><p>
          Per Eric Olsson
        </p><p>
          For constructive criticism and real testing of the dynamic
          record format.
        </p></li><li class="listitem"><p>
          Irena Pancirov <code class="email">&lt;<a class="email" href="mailto:irena@mail.yacc.it">irena@mail.yacc.it</a>&gt;</code>
        </p><p>
          Win32 port with Borland compiler.
          <code class="literal">mysqlshutdown.exe</code> and
          <code class="literal">mysqlwatch.exe</code>.
        </p></li><li class="listitem"><p>
          David J. Hughes
        </p><p>
          For the effort to make a shareware SQL database. At TcX, the
          predecessor of MySQL AB, we started with
          <code class="literal">mSQL</code>, but found that it couldn't satisfy
          our purposes so instead we wrote an SQL interface to our
          application builder Unireg. <a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin — Client for Administering a MySQL Server"><span class="command"><strong>mysqladmin</strong></span></a> and
          <a class="link" href="programs.html#mysql" title="4.5.1 mysql — The MySQL Command-Line Tool"><span class="command"><strong>mysql</strong></span></a> client are programs that were largely
          influenced by their <code class="literal">mSQL</code> counterparts. We
          have put a lot of effort into making the MySQL syntax a
          superset of <code class="literal">mSQL</code>. Many of the API's ideas
          are borrowed from <code class="literal">mSQL</code> to make it easy to
          port free <code class="literal">mSQL</code> programs to the MySQL API.
          The MySQL software doesn't contain any code from
          <code class="literal">mSQL</code>. Two files in the distribution
          (<code class="filename">client/insert_test.c</code> and
          <code class="filename">client/select_test.c</code>) are based on the
          corresponding (noncopyrighted) files in the
          <code class="literal">mSQL</code> distribution, but are modified as
          examples showing the changes necessary to convert code from
          <code class="literal">mSQL</code> to MySQL Server.
          (<code class="literal">mSQL</code> is copyrighted David J. Hughes.)
        </p></li><li class="listitem"><p>
          Patrick Lynch
        </p><p>
          For helping us acquire <a class="ulink" href="http://www.mysql.com/" target="_top">http://www.mysql.com/</a>.
        </p></li><li class="listitem"><p>
          Fred Lindberg
        </p><p>
          For setting up qmail to handle the MySQL mailing list and for
          the incredible help we got in managing the MySQL mailing
          lists.
        </p></li><li class="listitem"><p>
          Igor Romanenko <code class="email">&lt;<a class="email" href="mailto:igor@frog.kiev.ua">igor@frog.kiev.ua</a>&gt;</code>
        </p><p>
          <a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump — A Database Backup Program"><span class="command"><strong>mysqldump</strong></span></a> (previously
          <code class="literal">msqldump</code>, but ported and enhanced by
          Monty).
        </p></li><li class="listitem"><p>
          Yuri Dario
        </p><p>
          For keeping up and extending the MySQL OS/2 port.
        </p></li><li class="listitem"><p>
          Tim Bunce
        </p><p>
          Author of <span class="command"><strong>mysqlhotcopy</strong></span>.
        </p></li><li class="listitem"><p>
          Zarko Mocnik <code class="email">&lt;<a class="email" href="mailto:zarko.mocnik@dem.si">zarko.mocnik@dem.si</a>&gt;</code>
        </p><p>
          Sorting for Slovenian language.
        </p></li><li class="listitem"><p>
          "TAMITO" <code class="email">&lt;<a class="email" href="mailto:tommy@valley.ne.jp">tommy@valley.ne.jp</a>&gt;</code>
        </p><p>
          The <code class="literal">_MB</code> character set macros and the ujis
          and sjis character sets.
        </p></li><li class="listitem"><p>
          Joshua Chamas <code class="email">&lt;<a class="email" href="mailto:joshua@chamas.com">joshua@chamas.com</a>&gt;</code>
        </p><p>
          Base for concurrent insert, extended date syntax, debugging on
          NT, and answering on the MySQL mailing list.
        </p></li><li class="listitem"><p>
          Yves Carlier <code class="email">&lt;<a class="email" href="mailto:Yves.Carlier@rug.ac.be">Yves.Carlier@rug.ac.be</a>&gt;</code>
        </p><p>
          <span class="command"><strong>mysqlaccess</strong></span>, a program to show the access
          rights for a user.
        </p></li><li class="listitem"><p>
          Rhys Jones <code class="email">&lt;<a class="email" href="mailto:rhys@wales.com">rhys@wales.com</a>&gt;</code> (And GWE Technologies
          Limited)
        </p><p>
          For one of the early JDBC drivers.
        </p></li><li class="listitem"><p>
          Dr Xiaokun Kelvin ZHU <code class="email">&lt;<a class="email" href="mailto:X.Zhu@brad.ac.uk">X.Zhu@brad.ac.uk</a>&gt;</code>
        </p><p>
          Further development of one of the early JDBC drivers and other
          MySQL-related Java tools.
        </p></li><li class="listitem"><p>
          James Cooper <code class="email">&lt;<a class="email" href="mailto:pixel@organic.com">pixel@organic.com</a>&gt;</code>
        </p><p>
          For setting up a searchable mailing list archive at his site.
        </p></li><li class="listitem"><p>
          Rick Mehalick <code class="email">&lt;<a class="email" href="mailto:Rick_Mehalick@i-o.com">Rick_Mehalick@i-o.com</a>&gt;</code>
        </p><p>
          For <code class="literal">xmysql</code>, a graphical X client for MySQL
          Server.
        </p></li><li class="listitem"><p>
          Doug Sisk <code class="email">&lt;<a class="email" href="mailto:sisk@wix.com">sisk@wix.com</a>&gt;</code>
        </p><p>
          For providing RPM packages of MySQL for Red Hat Linux.
        </p></li><li class="listitem"><p>
          Diemand Alexander V. <code class="email">&lt;<a class="email" href="mailto:axeld@vial.ethz.ch">axeld@vial.ethz.ch</a>&gt;</code>
        </p><p>
          For providing RPM packages of MySQL for Red Hat Linux-Alpha.
        </p></li><li class="listitem"><p>
          Antoni Pamies Olive <code class="email">&lt;<a class="email" href="mailto:toni@readysoft.es">toni@readysoft.es</a>&gt;</code>
        </p><p>
          For providing RPM versions of a lot of MySQL clients for Intel
          and SPARC.
        </p></li><li class="listitem"><p>
          Jay Bloodworth <code class="email">&lt;<a class="email" href="mailto:jay@pathways.sde.state.sc.us">jay@pathways.sde.state.sc.us</a>&gt;</code>
        </p><p>
          For providing RPM versions for MySQL 3.21.
        </p></li><li class="listitem"><p>
          David Sacerdote <code class="email">&lt;<a class="email" href="mailto:davids@secnet.com">davids@secnet.com</a>&gt;</code>
        </p><p>
          Ideas for secure checking of DNS host names.
        </p></li><li class="listitem"><p>
          Wei-Jou Chen <code class="email">&lt;<a class="email" href="mailto:jou@nematic.ieo.nctu.edu.tw">jou@nematic.ieo.nctu.edu.tw</a>&gt;</code>
        </p><p>
          Some support for Chinese(BIG5) characters.
        </p></li><li class="listitem"><p>
          Wei He <code class="email">&lt;<a class="email" href="mailto:hewei@mail.ied.ac.cn">hewei@mail.ied.ac.cn</a>&gt;</code>
        </p><p>
          A lot of functionality for the Chinese(GBK) character set.
        </p></li><li class="listitem"><p>
          Jan Pazdziora <code class="email">&lt;<a class="email" href="mailto:adelton@fi.muni.cz">adelton@fi.muni.cz</a>&gt;</code>
        </p><p>
          Czech sorting order.
        </p></li><li class="listitem"><p>
          Zeev Suraski <code class="email">&lt;<a class="email" href="mailto:bourbon@netvision.net.il">bourbon@netvision.net.il</a>&gt;</code>
        </p><p>
          <a class="link" href="functions.html#function_from-unixtime"><code class="literal">FROM_UNIXTIME()</code></a> time
          formatting, <a class="link" href="functions.html#function_encrypt"><code class="literal">ENCRYPT()</code></a>
          functions, and <span class="command"><strong>bison</strong></span> advisor. Active
          mailing list member.
        </p></li><li class="listitem"><p>
          Luuk de Boer <code class="email">&lt;<a class="email" href="mailto:luuk@wxs.nl">luuk@wxs.nl</a>&gt;</code>
        </p><p>
          Ported (and extended) the benchmark suite to
          <code class="literal">DBI</code>/<code class="literal">DBD</code>. Have been of
          great help with <code class="literal">crash-me</code> and running
          benchmarks. Some new date functions. The
          <span class="command"><strong>mysql_setpermission</strong></span> script.
        </p></li><li class="listitem"><p>
          Alexis Mikhailov <code class="email">&lt;<a class="email" href="mailto:root@medinf.chuvashia.su">root@medinf.chuvashia.su</a>&gt;</code>
        </p><p>
          User-defined functions (UDFs); <a class="link" href="sql-syntax.html#create-function" title="13.1.13 CREATE FUNCTION Syntax"><code class="literal">CREATE
          FUNCTION</code></a> and <a class="link" href="sql-syntax.html#drop-function" title="13.1.24 DROP FUNCTION Syntax"><code class="literal">DROP
          FUNCTION</code></a>.
        </p></li><li class="listitem"><p>
          Andreas F. Bobak <code class="email">&lt;<a class="email" href="mailto:bobak@relog.ch">bobak@relog.ch</a>&gt;</code>
        </p><p>
          The <code class="literal">AGGREGATE</code> extension to user-defined
          functions.
        </p></li><li class="listitem"><p>
          Ross Wakelin <code class="email">&lt;<a class="email" href="mailto:R.Wakelin@march.co.uk">R.Wakelin@march.co.uk</a>&gt;</code>
        </p><p>
          Help to set up InstallShield for MySQL-Win32.
        </p></li><li class="listitem"><p>
          Jethro Wright III <code class="email">&lt;<a class="email" href="mailto:jetman@li.net">jetman@li.net</a>&gt;</code>
        </p><p>
          The <code class="filename">libmysql.dll</code> library.
        </p></li><li class="listitem"><p>
          James Pereria <code class="email">&lt;<a class="email" href="mailto:jpereira@iafrica.com">jpereira@iafrica.com</a>&gt;</code>
        </p><p>
          Mysqlmanager, a Win32 GUI tool for administering MySQL
          Servers.
        </p></li><li class="listitem"><p>
          Curt Sampson <code class="email">&lt;<a class="email" href="mailto:cjs@portal.ca">cjs@portal.ca</a>&gt;</code>
        </p><p>
          Porting of MIT-pthreads to NetBSD/Alpha and NetBSD 1.3/i386.
        </p></li><li class="listitem"><p>
          Martin Ramsch <code class="email">&lt;<a class="email" href="mailto:m.ramsch@computer.org">m.ramsch@computer.org</a>&gt;</code>
        </p><p>
          Examples in the MySQL Tutorial.
        </p></li><li class="listitem"><p>
          Steve Harvey
        </p><p>
          For making <span class="command"><strong>mysqlaccess</strong></span> more secure.
        </p></li><li class="listitem"><p>
          Konark IA-64 Centre of Persistent Systems Private Limited
        </p><p>
          Help with the Win64 port of the MySQL server.
        </p></li><li class="listitem"><p>
          Albert Chin-A-Young.
        </p><p>
          Configure updates for Tru64, large file support and better TCP
          wrappers support.
        </p></li><li class="listitem"><p>
          John Birrell
        </p><p>
          Emulation of <code class="function">pthread_mutex()</code> for OS/2.
        </p></li><li class="listitem"><p>
          Benjamin Pflugmann
        </p><p>
          Extended <code class="literal">MERGE</code> tables to handle
          <code class="literal">INSERTS</code>. Active member on the MySQL mailing
          lists.
        </p></li><li class="listitem"><p>
          Jocelyn Fournier
        </p><p>
          Excellent spotting and reporting innumerable bugs (especially
          in the MySQL 4.1 subquery code).
        </p></li><li class="listitem"><p>
          Marc Liyanage
        </p><p>
          Maintaining the OS X packages and providing invaluable
          feedback on how to create OS X packages.
        </p></li><li class="listitem"><p>
          Robert Rutherford
        </p><p>
          Providing invaluable information and feedback about the QNX
          port.
        </p></li><li class="listitem"><p>
          Previous developers of NDB Cluster
        </p><p>
          Lots of people were involved in various ways summer students,
          master thesis students, employees. In total more than 100
          people so too many to mention here. Notable name is Ataullah
          Dabaghi who up until 1999 contributed around a third of the
          code base. A special thanks also to developers of the AXE
          system which provided much of the architectural foundations
          for NDB Cluster with blocks, signals and crash tracing
          functionality. Also credit should be given to those who
          believed in the ideas enough to allocate of their budgets for
          its development from 1992 to present time.
        </p></li><li class="listitem"><p>
          Google Inc.
        </p><p>
          We wish to recognize Google Inc. for contributions to the
          MySQL distribution: Mark Callaghan's SMP Performance patches
          and other patches.
</p></li></ul>
</div>
<p>
      Other contributors, bugfinders, and testers: James H. Thompson,
      Maurizio Menghini, Wojciech Tryc, Luca Berra, Zarko Mocnik, Wim
      Bonis, Elmar Haneke, <code class="email">&lt;<a class="email" href="mailto:jehamby@lightside">jehamby@lightside</a>&gt;</code>,
      <code class="email">&lt;<a class="email" href="mailto:psmith@BayNetworks.com">psmith@BayNetworks.com</a>&gt;</code>,
      <code class="email">&lt;<a class="email" href="mailto:duane@connect.com.au">duane@connect.com.au</a>&gt;</code>, Ted Deppner
      <code class="email">&lt;<a class="email" href="mailto:ted@psyber.com">ted@psyber.com</a>&gt;</code>, Mike Simons, Jaakko Hyvatti.
    </p><p>
      And lots of bug report/patches from the folks on the mailing list.
    </p><p>
      A big tribute goes to those that help us answer questions on the
      MySQL mailing lists:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Daniel Koch <code class="email">&lt;<a class="email" href="mailto:dkoch@amcity.com">dkoch@amcity.com</a>&gt;</code>
        </p><p>
          Irix setup.
        </p></li><li class="listitem"><p>
          Luuk de Boer <code class="email">&lt;<a class="email" href="mailto:luuk@wxs.nl">luuk@wxs.nl</a>&gt;</code>
        </p><p>
          Benchmark questions.
        </p></li><li class="listitem"><p>
          Tim Sailer <code class="email">&lt;<a class="email" href="mailto:tps@users.buoy.com">tps@users.buoy.com</a>&gt;</code>
        </p><p>
          <code class="literal">DBD::mysql</code> questions.
        </p></li><li class="listitem"><p>
          Boyd Lynn Gerber <code class="email">&lt;<a class="email" href="mailto:gerberb@zenez.com">gerberb@zenez.com</a>&gt;</code>
        </p><p>
          SCO-related questions.
        </p></li><li class="listitem"><p>
          Richard Mehalick <code class="email">&lt;<a class="email" href="mailto:RM186061@shellus.com">RM186061@shellus.com</a>&gt;</code>
        </p><p>
          <code class="literal">xmysql</code>-related questions and basic
          installation questions.
        </p></li><li class="listitem"><p>
          Zeev Suraski <code class="email">&lt;<a class="email" href="mailto:bourbon@netvision.net.il">bourbon@netvision.net.il</a>&gt;</code>
        </p><p>
          Apache module configuration questions (log &amp; auth),
          PHP-related questions, SQL syntax-related questions and other
          general questions.
        </p></li><li class="listitem"><p>
          Francesc Guasch <code class="email">&lt;<a class="email" href="mailto:frankie@citel.upc.es">frankie@citel.upc.es</a>&gt;</code>
        </p><p>
          General questions.
        </p></li><li class="listitem"><p>
          Jonathan J Smith <code class="email">&lt;<a class="email" href="mailto:jsmith@wtp.net">jsmith@wtp.net</a>&gt;</code>
        </p><p>
          Questions pertaining to OS-specifics with Linux, SQL syntax,
          and other things that might need some work.
        </p></li><li class="listitem"><p>
          David Sklar <code class="email">&lt;<a class="email" href="mailto:sklar@student.net">sklar@student.net</a>&gt;</code>
        </p><p>
          Using MySQL from PHP and Perl.
        </p></li><li class="listitem"><p>
          Alistair MacDonald <code class="email">&lt;<a class="email" href="mailto:A.MacDonald@uel.ac.uk">A.MacDonald@uel.ac.uk</a>&gt;</code>
        </p><p>
          Is flexible and can handle Linux and perhaps HP-UX.
        </p></li><li class="listitem"><p>
          John Lyon <code class="email">&lt;<a class="email" href="mailto:jlyon@imag.net">jlyon@imag.net</a>&gt;</code>
        </p><p>
          Questions about installing MySQL on Linux systems, using
          either <code class="filename">.rpm</code> files or compiling from
          source.
        </p></li><li class="listitem"><p>
          Lorvid Ltd. <code class="email">&lt;<a class="email" href="mailto:lorvid@WOLFENET.com">lorvid@WOLFENET.com</a>&gt;</code>
        </p><p>
          Simple billing/license/support/copyright issues.
        </p></li><li class="listitem"><p>
          Patrick Sherrill <code class="email">&lt;<a class="email" href="mailto:patrick@coconet.com">patrick@coconet.com</a>&gt;</code>
        </p><p>
          ODBC and VisualC++ interface questions.
        </p></li><li class="listitem"><p>
          Randy Harmon <code class="email">&lt;<a class="email" href="mailto:rjharmon@uptimecomputers.com">rjharmon@uptimecomputers.com</a>&gt;</code>
        </p><p>
          <code class="literal">DBD</code>, Linux, some SQL syntax questions.
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="documenters-translators"></a>1.9.2 Documenters and translators</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845560240"></a><a class="indexterm" name="idm139684845558784"></a><p>
      The following people have helped us with writing the MySQL
      documentation and translating the documentation or error messages
      in MySQL.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Paul DuBois
        </p><p>
          Ongoing help with making this manual correct and
          understandable. That includes rewriting Monty's and David's
          attempts at English into English as other people know it.
        </p></li><li class="listitem"><p>
          Kim Aldale
        </p><p>
          Helped to rewrite Monty's and David's early attempts at
          English into English.
        </p></li><li class="listitem"><p>
          Michael J. Miller Jr.
          <code class="email">&lt;<a class="email" href="mailto:mke@terrapin.turbolift.com">mke@terrapin.turbolift.com</a>&gt;</code>
        </p><p>
          For the first MySQL manual. And a lot of spelling/language
          fixes for the FAQ (that turned into the MySQL manual a long
          time ago).
        </p></li><li class="listitem"><p>
          Yan Cailin
        </p><p>
          First translator of the MySQL Reference Manual into simplified
          Chinese in early 2000 on which the Big5 and HK coded versions
          were based.
        </p></li><li class="listitem"><p>
          Jay Flaherty <code class="email">&lt;<a class="email" href="mailto:fty@mediapulse.com">fty@mediapulse.com</a>&gt;</code>
        </p><p>
          Big parts of the Perl
          <code class="literal">DBI</code>/<code class="literal">DBD</code> section in the
          manual.
        </p></li><li class="listitem"><p>
          Paul Southworth <code class="email">&lt;<a class="email" href="mailto:pauls@etext.org">pauls@etext.org</a>&gt;</code>, Ray Loyzaga
          <code class="email">&lt;<a class="email" href="mailto:yar@cs.su.oz.au">yar@cs.su.oz.au</a>&gt;</code>
        </p><p>
          Proof-reading of the Reference Manual.
        </p></li><li class="listitem"><p>
          Therrien Gilbert <code class="email">&lt;<a class="email" href="mailto:gilbert@ican.net">gilbert@ican.net</a>&gt;</code>, Jean-Marc
          Pouyot <code class="email">&lt;<a class="email" href="mailto:jmp@scalaire.fr">jmp@scalaire.fr</a>&gt;</code>
        </p><p>
          French error messages.
        </p></li><li class="listitem"><p>
          Petr Snajdr, <code class="email">&lt;<a class="email" href="mailto:snajdr@pvt.net">snajdr@pvt.net</a>&gt;</code>
        </p><p>
          Czech error messages.
        </p></li><li class="listitem"><p>
          Jaroslaw Lewandowski <code class="email">&lt;<a class="email" href="mailto:jotel@itnet.com.pl">jotel@itnet.com.pl</a>&gt;</code>
        </p><p>
          Polish error messages.
        </p></li><li class="listitem"><p>
          Miguel Angel Fernandez Roiz
        </p><p>
          Spanish error messages.
        </p></li><li class="listitem"><p>
          Roy-Magne Mo <code class="email">&lt;<a class="email" href="mailto:rmo@www.hivolda.no">rmo@www.hivolda.no</a>&gt;</code>
        </p><p>
          Norwegian error messages and testing of MySQL 3.21.xx.
        </p></li><li class="listitem"><p>
          Timur I. Bakeyev <code class="email">&lt;<a class="email" href="mailto:root@timur.tatarstan.ru">root@timur.tatarstan.ru</a>&gt;</code>
        </p><p>
          Russian error messages.
        </p></li><li class="listitem"><p>
          <code class="email">&lt;<a class="email" href="mailto:brenno@dewinter.com">brenno@dewinter.com</a>&gt;</code> &amp; Filippo Grassilli
          <code class="email">&lt;<a class="email" href="mailto:phil@hyppo.com">phil@hyppo.com</a>&gt;</code>
        </p><p>
          Italian error messages.
        </p></li><li class="listitem"><p>
          Dirk Munzinger <code class="email">&lt;<a class="email" href="mailto:dirk@trinity.saar.de">dirk@trinity.saar.de</a>&gt;</code>
        </p><p>
          German error messages.
        </p></li><li class="listitem"><p>
          Billik Stefan <code class="email">&lt;<a class="email" href="mailto:billik@sun.uniag.sk">billik@sun.uniag.sk</a>&gt;</code>
        </p><p>
          Slovak error messages.
        </p></li><li class="listitem"><p>
          Stefan Saroiu <code class="email">&lt;<a class="email" href="mailto:tzoompy@cs.washington.edu">tzoompy@cs.washington.edu</a>&gt;</code>
        </p><p>
          Romanian error messages.
        </p></li><li class="listitem"><p>
          Peter Feher
        </p><p>
          Hungarian error messages.
        </p></li><li class="listitem"><p>
          Roberto M. Serqueira
        </p><p>
          Portuguese error messages.
        </p></li><li class="listitem"><p>
          Carsten H. Pedersen
        </p><p>
          Danish error messages.
        </p></li><li class="listitem"><p>
          Arjen Lentz
        </p><p>
          Dutch error messages, completing earlier partial translation
          (also work on consistency and spelling).
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="packages"></a>1.9.3 Packages that support MySQL</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845521376"></a><a class="indexterm" name="idm139684845519920"></a><p>
      The following is a list of creators/maintainers of some of the
      most important API/packages/applications that a lot of people use
      with MySQL.
    </p><p>
      We cannot list every possible package here because the list would
      then be way to hard to maintain. For other packages, please refer
      to the software portal at
      <a class="ulink" href="http://solutions.mysql.com/software/" target="_top">http://solutions.mysql.com/software/</a>.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Tim Bunce, Alligator Descartes
        </p><p>
          For the <code class="literal">DBD</code> (Perl) interface.
        </p></li><li class="listitem"><p>
          Andreas Koenig <code class="email">&lt;<a class="email" href="mailto:a.koenig@mind.de">a.koenig@mind.de</a>&gt;</code>
        </p><p>
          For the Perl interface for MySQL Server.
        </p></li><li class="listitem"><p>
          Jochen Wiedmann <code class="email">&lt;<a class="email" href="mailto:wiedmann@neckar-alb.de">wiedmann@neckar-alb.de</a>&gt;</code>
        </p><p>
          For maintaining the Perl <code class="literal">DBD::mysql</code> module.
        </p></li><li class="listitem"><p>
          Eugene Chan <code class="email">&lt;<a class="email" href="mailto:eugene@acenet.com.sg">eugene@acenet.com.sg</a>&gt;</code>
        </p><p>
          For porting PHP for MySQL Server.
        </p></li><li class="listitem"><p>
          Georg Richter
        </p><p>
          MySQL 4.1 testing and bug hunting. New PHP 5.0
          <code class="literal">mysqli</code> extension (API) for use with MySQL
          4.1 and up.
        </p></li><li class="listitem"><p>
          Giovanni Maruzzelli <code class="email">&lt;<a class="email" href="mailto:maruzz@matrice.it">maruzz@matrice.it</a>&gt;</code>
        </p><p>
          For porting iODBC (Unix ODBC).
        </p></li><li class="listitem"><p>
          Xavier Leroy <code class="email">&lt;<a class="email" href="mailto:Xavier.Leroy@inria.fr">Xavier.Leroy@inria.fr</a>&gt;</code>
        </p><p>
          The author of LinuxThreads (used by the MySQL Server on
          Linux).
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="tools-used-to-create-mysql"></a>1.9.4 Tools that were used to create MySQL</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845501920"></a><p>
      The following is a list of some of the tools we have used to
      create MySQL. We use this to express our thanks to those that has
      created them as without these we could not have made MySQL what it
      is today.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          Free Software Foundation
        </p><p>
          From whom we got an excellent compiler
          (<span class="command"><strong>gcc</strong></span>), an excellent debugger
          (<span class="command"><strong>gdb</strong></span> and the <code class="literal">libc</code>
          library (from which we have borrowed
          <code class="filename">strto.c</code> to get some code working in
          Linux).
        </p></li><li class="listitem"><p>
          Free Software Foundation &amp; The XEmacs development team
        </p><p>
          For a really great editor/environment.
        </p></li><li class="listitem"><p>
          Julian Seward
        </p><p>
          Author of <code class="literal">valgrind</code>, an excellent memory
          checker tool that has helped us find a lot of otherwise hard
          to find bugs in MySQL.
        </p></li><li class="listitem"><p>
          Dorothea Lütkehaus and Andreas Zeller
        </p><p>
          For <code class="literal">DDD</code> (The Data Display Debugger) which
          is an excellent graphical front end to
          <span class="command"><strong>gdb</strong></span>).
</p></li></ul>
</div>

</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="supporters"></a>1.9.5 Supporters of MySQL</h3>

</div>

</div>

</div>
<a class="indexterm" name="idm139684845487728"></a><p>
      Although Oracle Corporation and/or its affiliates own all
      copyrights in the <code class="literal">MySQL server</code> and the
      <code class="literal">MySQL manual</code>, we wish to recognize the
      following companies, which helped us finance the development of
      the <code class="literal">MySQL server</code>, such as by paying us for
      developing a new feature or giving us hardware for development of
      the <code class="literal">MySQL server</code>.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
          VA Linux / Andover.net
        </p><p>
          Funded replication.
        </p></li><li class="listitem"><p>
          NuSphere
        </p><p>
          Editing of the MySQL manual.
        </p></li><li class="listitem"><p>
          Stork Design studio
        </p><p>
          The MySQL website in use between 1998-2000.
        </p></li><li class="listitem"><p>
          Intel
        </p><p>
          Contributed to development on Windows and Linux platforms.
        </p></li><li class="listitem"><p>
          Compaq
        </p><p>
          Contributed to Development on Linux/Alpha.
        </p></li><li class="listitem"><p>
          SWSoft
        </p><p>
          Development on the embedded <a class="link" href="programs.html#mysqld" title="4.3.1 mysqld — The MySQL Server"><span class="command"><strong>mysqld</strong></span></a> version.
        </p></li><li class="listitem"><p>
          FutureQuest
        </p><p>
          The <a class="link" href="server-administration.html#option_mysqld_skip-show-database"><code class="option">--skip-show-database</code></a>
          option.
</p></li></ul>
</div>

</div>

</div>

</div>
<div class="copyright-footer">

</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a></td>
<td width="20%" align="center"><a accesskey="u" href="">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="installing.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top"> Preface and Legal Notices</td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top">Chapter 2 Installing and Upgrading MySQL</td>
</tr>
</table>
</div>
</body>
</html>
